项目场景:

相关背景:在PostgreSQL使用过程中,在代码中写入数据的时候报错误:重复的键值违反了唯一约束“baj_gift_manage_pkey”

问题描述

详细:Key (id)=(10) already exists.; nested exception is org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "baj_gift_manage_pkey"

详细:Key (id)=(10) already exists.

此前,我有针对此表做过一个主键自增的操作,所以问题可能是出在了此处

原因分析:

数据库的主键自增超出了表中约定的规范最大值

解决方案:

1、先要查看这张表中已经存在的id的最大值是多少. 直接在数据库连接工具中输入sql查询.

Select max(id) from baj_gift_manage;

2、查询这张表的id的自增序列是多少.

Select nextval('baj_gift_manage_id_seq');

3、如果这张表的id最大值大于id的自增序列号,那就证明在添加的时候会提示id被占用,而导致id违反唯一约束的问题,在此,我们给id重新赋予一个自增序列

SELECT setval('baj_gift_manage_id_seq', xxx);// XXX可以等于表中id的最大值或者大于

4、查询自增序列

Select nextval('baj_gift_manage_id_seq');// 我们发现所得到的值是我们在第三步设置过的XXX值加一。到此问题解决

推荐文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: