首页 > 解决方案 > jumpstart - ActiveRecord::RecordNotUnique: PG::UniqueViolation: 错误: 重复键值违反唯一约束

问题描述

rails test在全新的 jumpstart/gorails 安装和空白数据库上运行时,我得到以下信息:-

DRb::DRbRemoteError: PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "index_users_on_email"
DETAIL:  Key (email)=() already exists.
 (ActiveRecord::RecordNotUnique)

在我的架构中,我在用户上有以下内容,这导致了上述情况:-

t.index ["email"], name: "index_users_on_email", unique: true

似乎错误告诉我有一个现有记录(用户?)但数据库是空白的,所以我不明白为什么会这样?

标签: ruby-on-railspostgresqlminitest

解决方案


你可以这样处理:我在创建用户时遇到了类似的问题。我是这样固定的。

begin
   User.where(email: "abc@gmail.com").first_or_create(email:"abc@gmail.com", name: "name of user", other fields)
rescue ActiveRecord::RecordNotUnique
   retry
end

推荐阅读