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

postgresql - 错误 23505 重复键值违反了唯一约束“foo_column_key”(不是主键)

江佐
2023-03-14

我在postgresql中是新的,当我测试我的代码以插入时,我收到以下错误消息

错误异常('error','23505',重复的键值违反了唯一约束“foo_column_key”);

我曾尝试在cursor.execute()代码后使用connection.commit()或connection.rollback()。

问题:

如何在不重新创建类似于表的命令“select setval('foo_id_seq',1')的情况下修复此错误?在我尝试使用“reindex table foo来自postgres但不起作用,从psql运行提交或回滚也不起作用(可能是连接id不同)。也搜索谷歌重置所有交易数据或使用上面的搜索键“我的标题”,但找不到任何解决方案。

谁能帮我或者给我指明解决这个问题的方向?

谢谢你。

编辑:

对不起,也许这清楚地给出了我的问题:

create table foo(
  foo_id serial unique not null primary key,
  foo_column character(35) unique not null
);

我从我的编程代码中使用此sql命令插入数据:

insert into foo(foo_column) values('my_email@test.com');

起初我通过“select*from foo;”检查表中的数据,但没有数据插入。我再次通过刷新页面(cgi应用程序)重新运行代码并收到该消息,然后我通过select*from foo在表中再次检查;但没有插入任何内容。这是我第一次使用事务插入,在我使用mysql之前根本没有事务。

我试图找到解决方案,但总是发现解决方案是为列序列/大序列主键,我很好奇,所以我问这里。有什么方法可以解决这个错误而不需要重新创建表吗?

希望这能更清楚地说明我的问题,谢谢。

共有1个答案

晏鸿畅
2023-03-14

很明显,从消息中可以看出,您正试图在一个已经存在的列中插入一个值。如果您在字段上有一个序列器(比如一个串行列类型),那么它很可能与表不同步,因为您已经完成了一个插入并提供了一个值(而不是让“默认”机制通过从序列器获取nextval来处理它)。如果是这种情况,使用setval语句将sequencer重置为该字段的最大值(Google how to do that——关于该主题有很多帖子)。或者只是不断尝试插入,直到其中一个神奇的工作!;)

 类似资料:
  • 我在django应用程序中创建了一个模型,并从pgadmin将数据填充到表中,但现在当我试图从应用程序创建记录时,它抛出了这个完整性错误: 重复的键值违反了唯一约束“packsapp_foo_pkey” 详细信息:键(id)=(4)已经存在。 这是models.py 我是否总是必须从应用程序本身插入数据? Views.py

  • 我必须交换同一表的不同行的属性。 有一列“reference_id”在 DB 中具有唯一的约束。 代码: A 级- B级- 异常跟踪:

  • 我有一个笑话模型: 现在,当我试图迁移最后一行时,我得到了错误。基本上,我想将一个用户链接到Joke对象,因为我已经有了一个数据库,所以我希望默认值为1,这是管理员用户的id(我检查过了...).Makemigrations工作正常,但是当我尝试迁移时,我得到了这个: 我真的不明白怎么了。有什么想法吗?

  • 我在创建应用程序时遇到了这个问题。因此,每当我添加第一条评论时,问题都不会出现,但当我第二次尝试时,我会收到此错误: 重复的键值违反了唯一约束“tripplanner_discussion_author_id_key”详细信息:键 (author_id)=(1) 已存在。 我试图把放到 models.py,但它根本没有帮助。 models.py views.py 更新 当我登录到另一个用户时,一个

  • 我有这样的桌子: 我试图插入一些查询到另一个表(device_usage_test1)。这是我的表: 这是我的插入命令: 稍后,我将在device_usage_test1上创建一个插入查询。所以我的设备序列必须是唯一的。但是当我尝试用deviceserial (unique)插入时。它显示错误:< code >错误:重复的键值违反了唯一约束“device _ usage _ device seri

  • 我正在我的Laravel应用程序中使用psql。我正在尝试创建我的用户,并且不断出现此错误 唯一冲突:7错误:重复键值违反唯一约束“users\u pkey” 我做了我想做的事吗? 当我用钩住我的应用程序时,我现在所拥有的一切都会起作用。 任何提示/建议将对我意义重大。