项目场景:
相关背景:在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值加一。到此问题解决