Mysql ::错误:重复条目

时间:2010-04-09 07:02:09

标签: mysql ruby-on-rails activerecord

我有一个模特

class Gift < ActiveRecord::Base
  validates_uniqueness_of :giver_id, :scope => :account_id
end

add_index(:gifts, [:account_id, :giver_id], :uniq => true)

动作

def create
  @gift= Gift.new(params[:gift])

  if @gift.save
    ...
  else
    ...
  end
end

在“生产”模式下,我有时会收到错误

ActiveRecord::StatementInvalid: Mysql::Error: Duplicate entry '122394471958-50301499' for key 'index_gifts_on_account_id_and_user_id'

出了什么问题?

1 个答案:

答案 0 :(得分:3)

看起来gifts表格具有account_iduser_id的唯一索引。

如果您需要此索引,请为模型添加唯一性检查:

class Gift < ActiveRecord::Base
  validates_uniqueness_of :giver_id, :scope => :account_id
  validates_uniqueness_of :user_id, :scope => :account_id
end

否则删除索引。

DROP INDEX index_gifts_on_account_id_and_user_id ON gifts

修改  尝试添加giver_id的状态检查。

class Gift < ActiveRecord::Base
  validates_presence_of :giver_id
  validates_uniqueness_of :user_id, :scope => :account_id
end