寫了一個接口,里面用到了MyBatis的自增配置( useGeneratedKeys
),寫好后在使用Test測試時返發現報了錯:Duplicate entry '0' for key 'PRIMARY'
,如下圖所示:
當時以為是因為之前自己自己手動在數據庫表中插入的數據導致表數據中的數據記錄條數沒有被記錄,把原數據刪了后再次運行發現確實可以插進去,但是當我再次運行方法時發現又出現了這個問題,看來之前的辦法並不對,在網上查了查,發現了是數據庫表設計不合理導致的;
因為主鍵設置不能為空,因此默認是以"0"來進行填充的。因此在數據插入時數據的主鍵id值被0占據,但由於之前已經有數據了,id為“0”的索引已經被占,在使用就會報這個錯誤,因此我們只需要對表中的主鍵“id”設置成自增即可,設置(Navicat)如下:
設置好后再次測試: