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