当前位置: 首页 > 知识库问答 >
问题:

插入记录时主键上的Postgresql唯一冲突

东门佐
2023-03-14

在使用Postgresql的Rails4.2中,我在尝试保存新的ActiveRecord对象时遇到了这个错误

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

它看起来像是试图用已经存在的主键将记录插入到表中。我该怎么解决这个问题?

共有1个答案

丁晋
2023-03-14

事实证明,PG用来生成主键的计数器有时可能会出错(我不知道如何),只需要将其重置为表中主键的最大值。

我在Jasith Fernando的博客里找到了这个答案

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

rails db development

然后,需要重置的变量的名称是附加了\u id\u seq的表的名称,因此将其重置为最大主键值的命令如下

SELECT setval('my_table_id_seq', (SELECT MAX(id) FROM my_table));
 类似资料:
  • 我有一个mysql数据库,它的表既有一个自动递增的主键,也有一个唯一的字符串值键(sha-1散列)。 如果我尝试添加一个与现有记录具有相同sha-1哈希的记录,我只想获取现有记录的主键。我可以使用“在重复密钥更新时插入…”或“插入忽略”之类的方法来防止在尝试插入具有现有哈希值的记录时出现异常。 但是,当这种情况发生时,我需要检索现有记录的主键。我找不到用一条SQL语句来实现这一点的方法。如果重要的

  • 每当我的应用程序启动时,我总是得到以下错误消息: 将data.sql更改为: 生成以下错误消息:

  • 所以我有一个表,它用一个昵称作为外键,用一个id作为主键: 到目前为止,一切都很好。然而,每当我试图从发布中获取主键时,它告诉我:“没有唯一的约束来匹配引用表“信息”的给定键。 但是,如果我将表中的信息信息ID更改为唯一,错误就会消失。这是正确的做事方式吗? 提前感谢大家!

  • 我正在使用jOOQ为我的数据库表生成POJO。这很有效。 我有一个带有主键()和唯一键()的表。更新记录时,jOOQ使用主键。 我想通过使用唯一键而不是主键来更新记录。 https://github.com/jOOQ/jOOQ/blob/master/jOOQ/src/main/java/org/jooq/impl/UpdatableRecordImpl.java 本质上,我想用另一个键(第二个参

  • java } cardto.java 唯一索引或主键冲突:由:org.h2.jdbc.jdbcsqlexception使用:唯一索引或主键冲突:“public.car(ID)上的主键”;SQL语句:插入到car(可转换,engine_type,IS_Brooking,IS_Function,license_plate,Manufactor,rating,seat_count,id)值(?,?,?,

  • 问题内容: 我正在将MS Access数据库重新写入SQL Server的过程中,并且在Access中发现了一个奇怪的问题,希望有人可以提供帮助。 我有一个表,我们称它为“主”,带有索引的帐户上的主键,不允许重复。看起来很简单,但是在插入数据时出现了我的问题。 我的INSERT查询是(为了简洁起见,字段数受到限制) 问题是这样的,如果我运行查询的一部分,我会得到2365条记录,但是当我运行查询时,