local postgres db keeps giving error duplicate key value violates unique constraint
我不明白为什么postgres会提高:
1 | duplicate KEY VALUE violates UNIQUE CONSTRAINT |
我去pgadmin检查表,看看表是否真的有重复,看看:
建议运行VACUUM
表上的估计行数与实际行数明显不同。
为什么会这样? 幸运的是,它似乎没有发生在heroku的生产中。 这是一个rails应用程序。
更新:
这是sql日志:
SQL (2.6ms) INSERT INTO"favorites" ("artist_id","author_id",
"created_at","post_id","updated_at") VALUES ($1, $2, $3, $4, $5)
RETURNING"id" [["artist_id", 17], ["author_id", nil], ["created_at",
Sun, 18 Mar 2012 03:48:37 UTC +00:00], ["post_id", 62], ["updated_at",
Sun, 18 Mar 2012 03:48:37 UTC +00:00]] PG::Error: ERROR: duplicate
key value violates unique constraint
"index_favorites_on_artist_id_and_post_id" DETAIL: Key (artist_id,
post_id)=(17, 62) already exists.
但是在实际的表格中没有这样的记录,其中artist_id = 17和post_id = 62.但是postgres认为存在。
您需要运行
但是,与唯一的密钥违规没有任何关系。这意味着您尝试在具有
如果出现PostgreSQL唯一密钥违规错误消息,
这种情况的一个常见原因是您已将数据放入具有主键的表中,该主键通常由串行类型提供,但默认()后面的序列与表不同步。
我在开发环境中遇到了这个问题。这对我有用
我的解决方案在某些情况下是危险的,因为它更新整个数据库。我建议在生产环境中工作时查看其他解决方案。
但是,按照@Erwin Brandstetter的建议,
实际上我认为这个问题根本与postgres无关。它是同时重复的ajax调用的组合,创建了一个重复的记录,然后都没有插入。