在使用Postgresql的Rails 4.2中,我在尝试保存新的ActiveRecord对象时遇到此错误
PG :: UniqueViolation:错误:重复键值违反唯一约束'My_table_name_pkey'
看起来它正在尝试使用已存在的主键将记录插入表中。我该如何解决这个问题?
答案 0 :(得分:1)
事实证明,计数器PG用于生成主键的时间可能会搞砸(我不知道如何),并且需要将其重置为表中主键的最大值。
中找到了这个答案对我来说,这发生在开发数据库中,所以我进入了这个数据库的控制台:
rails db development
然后需要重置的变量的名称是附加_id_seq
的表的名称,因此将其重置为最大主键值的命令是
SELECT setval('my_table_id_seq', (SELECT MAX(id) FROM my_table));