Duplicate entry 'xxx' for key 'xxx'
Posted boomoom
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Duplicate entry 'xxx' for key 'xxx'相关的知识,希望对你有一定的参考价值。
插入数据的时候 报错,Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry ‘xxx-xxx-xxx-xxx-xxx‘ for key ‘AA‘
1、这段信息给出的是索引重复,就去找数据是否相同,但是并不相同。
2、又由于‘xxx-xxx-xxx-xxx-xxx‘部分只显示60个字符,怀疑是数据被截取,变换参数值尝试,还是报错。
3、再次对批量的数据逐条debug,最后定位到出错的那条数据,发现是组合索引中的一个参数,有大小写两条数据,在插入后一条时报错。
4、对数据库中的该字段,根据业务需要,改成支持大小写的。
5、mysql的唯一索引或组合索引中某个字段,设置区分大小写。具体操作: 字段设定里面有一个【二进制(Binary)】的选项,需要区分大小写的字段勾上就可以了。
踩坑点:
1、堆栈打印的错误信息 索引重复只打印部分,不打印全部,这个导致排查耗时。
2、mysql的索引添加时,默认不区分大小写。
以上是关于Duplicate entry 'xxx' for key 'xxx'的主要内容,如果未能解决你的问题,请参考以下文章
sql语句插入时提示:“Duplicate entry 'XXX' for key 1 ” 是什么原因?
Duplicate entry '0' for key 'PRIMARY'
ERROR 1062 (23000): Duplicate entry '0' for key 'PRIMARY'
Duplicate entry '97112' for key 1