本地postgres db不断给出错误重复键值违反唯一约束

Hom*_*man 4 postgresql ruby-on-rails heroku duplicates

我不明白为什么postgres会提高:

duplicate key value violates unique constraint
Run Code Online (Sandbox Code Playgroud)

我去检查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)返回"id"[[" artist_id",17],["author_id",nil],["created_at",太阳,2012年3月18日03:48:37 UTC +00:00],["post_id",62],["updated_at",Sun ,2012年3月18日03:48:37 UTC +00:00]] PG ::错误:错误:重复键值违反唯一约束"index_favorites_on_artist_id_and_post_id"DETAIL:键(artist_id,post_id)=(17,62)已经存在.

但是在实际的表格中没有这样的记录,其中artist_id = 17和post_id = 62.但是postgres认为存在.

Erw*_*ter 8

您需要运行ANALYZE以使行计数同步.在pgAdmin中右键单击表格,然后选择"维护".然后按下F5桌子.

但是,与唯一的密钥违规没有任何关系.这意味着您尝试在具有UNIQUEPRIMARY KEY约束的列中输入的值已存在于另一行中.