SQL:duplicate key value violates unique constraint

错误描述:

### Error updating database.  Cause: com.kingbase8.util.KSQLException: ERROR: duplicate key value violates unique constraint "LEAD_GROUP_PKEY"
  Detail: Key (id)=(1059) already exists.
### The error may involve com.taiji.dao.LeadGroupMapper.insert-Inline
### The error occurred while setting parameters
### SQL: insert into lead_group (group_name, unit_type,unit_id, create_time, code,        header, head_post, head_tel,contact, contact_post, contact_tel, company, company_post, company_tel) values (?, ?,?, ?, ?, ?, ?, ?,?, ?, ?, ?, ?, ?)
### Cause: com.kingbase8.util.KSQLException: ERROR: duplicate key value violates unique constraint "LEAD_GROUP_PKEY"
  Detail: Key (id)=(1059) already exists.
; ]; ERROR: duplicate key value violates unique constraint "LEAD_GROUP_PKEY"
  Detail: Key (id)=(1059) already exists.

 

原因:

出现这个问题的原因是重复的键值违反了唯一性约束,前面的值已经远大于后边的值,serial key其实是由sequence实现的,当你手动给serial列赋值的时候,sequence是不会自增量变化的,所以最好不要对serial手动赋值。

1.查询这张表的id的自增序列是多少:

//lead_group为表明 id为要查询自增主键
select nextval('lead_group_id_seq');  

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

select max(id) from lead_group;

 

解决方案:

如上图所示:这张表的id的最大值大于 id的自增序列的值。那就证明添加的时候会出现id被占用,而导致id违反唯一性约束的问题。我们只需要重新给id的自增序列赋值,赋一个大于现在表中id的最大值就可以了。

select setval('lead_group_id_seq', (select max(id) from lead_group) + 100)

在重新查询一下,id的自增序列的值是多少,如果和上一步我们设置的值一样的话,就没有问题了。

select nextval('lead_group_id_seq');

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不死鸟.亚历山大.狼崽子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值