com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '140' for key 'PRIMARY'
MySQLIntegrityConstraintViolationException: key 'PRIMARY'重複條目'140',主鍵重複了,我這裏的註解是(id)重複主鍵id是140.
出現問題的原因:
之前沒有數據庫讀寫分離,是沒有問題的,最近修改爲數據庫讀寫分離後,本地測試數據還沒有統一,兩個數據庫的這張表的數據不統一,導致讀數據獲取的主鍵id,和添加數據時添加的主鍵id衝突。發現插數據的那張表主鍵id沒有設置自增,每次添加數據時需要先獲取最大的主鍵id,加1後,再去添加數據,所以問題就出現在此。
解決辦法:
將主鍵設置爲自增。
( 如果數據庫是讀寫分離的,則數據要做到統一)
出現此問題的其他解決原因:
1.檢查是否表結構的問題(一般很少這個可能性)
2.檢查在添加數據的時候,是否帶有主鍵ID,ID是否不爲空.
如果你是因爲使用了mybatis,再添加數據的時候報的這個錯誤時:
檢查添加的方法sql語句,在插入數據後返回ID的地方,下面這裏:
<selectKey resultType="java.lang.Long" order="BEFORE" keyProperty="productId">
SELECT LAST_INSERT_ID()
</selectKey>
把BEFORE改成AFTER;
<selectKey resultType="java.lang.Long" order="AFTER" keyProperty="productId">
SELECT LAST_INSERT_ID()
</selectKey>
問題解決