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

Duplicate entry '...' for key 'PRIMARY

Duplicate entry '97112' for key 1