首页 文章

插入记录时Postgresql对主键的唯一违规

提问于
浏览
1

在使用Postgresql的Rails 4.2中,我在尝试保存新的ActiveRecord对象时遇到此错误

PG :: UniqueViolation:错误:重复键值违反唯一约束'My_table_name_pkey'

看起来它正在尝试使用已存在的主键将记录插入到表中 . 我该如何解决这个问题?

1 回答

  • 1

    事实证明,计数器PG用于生成主键的时间可能会搞砸(我不知道如何),并且需要将其重置为表中主键的最大值 .

    我在Jasith Fernando's blog找到了这个答案

    对我来说,这发生在开发数据库中,所以我进入了这个数据库的控制台,如下所示:

    rails db development
    

    然后需要重置的变量的名称是附加 _id_seq 的表的名称,因此将其重置为最大主键值的命令是this

    SELECT setval('my_table_id_seq', (SELECT MAX(id) FROM my_table));
    

相关问题