1. 程式人生 > >Duplicate entry 'xxx' for key 'xxx'

Duplicate entry 'xxx' for key 'xxx'

全部 導致 for constrain jdb 定位 但是 唯一索引 批量

插入數據的時候 報錯,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'