Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry ‘…’ for key ‘PRIMARY’
前兩天演示項目前,隨手測試了一下,之前運行正常的功能突然報了一個主鍵重複的錯誤。從前端查到後端,查看所有數據的輸入傳輸都沒有問題。然而運行了十幾次後報錯突然沒有了。。。經過分析發現了問題:重新導入表會影響主鍵的自增值。
具體描述
此功能涉及三個表,問題出在第二個表的數據插入上。
- 第一個表插入一條數據,並獲取插入數據在數據庫中的id值
- 根據第一步的id值及其他數據向第二個表插入數據
本來是沒有問題的,但我演示前刪除了十幾條測試數據,並將表刪除重新從sql導入。這就導致第一個表裏id自增是從我刪除後的最大值開始的,而第二個表裏已經有此id的數據,所以報了主鍵重複的錯誤。