MySql報錯:Duplicate entry ‘10‘ for key ‘PRIMARY‘的解決方案
翻譯錯誤
經(jīng)常遇到這個問題,今天我把這個問題記錄下來,以后如果有其他人遇到相同的問題,不至于困惑。我自己也作為一種學(xué)習(xí)中的出錯記錄,錯題本,提醒自己。
在操作數(shù)據(jù)庫的時候,經(jīng)常會出現(xiàn)Duplicate entry ‘10’ for key 'PRIMARY’這樣的報錯,這是什么意思呢?
我去翻譯了一下,翻譯結(jié)果如下:

所以這種問題的出現(xiàn)就代表鍵名重復(fù)了
先正常制作表格
定義表格表頭的時候,一般會設(shè)置id為主鍵(因?yàn)閕d具有唯一性,且簡單)

以下是用Navicat Premium 16制作的一個表格

錯一遍(體驗(yàn)報錯)
在此表格中,id已經(jīng)有1,2,3,4,5,6,7,8了,如果此時我插入的數(shù)據(jù)主鍵是8,就會出現(xiàn)如下結(jié)果:

是的,報這個錯了。因?yàn)?這個主鍵是存在的,現(xiàn)在插入的數(shù)據(jù),主鍵還是8,就造成了主鍵重復(fù)的沖突,所以會報這個錯,同時數(shù)據(jù)也是插入不進(jìn)去的。
找到報錯原因,并改正
如果我們把需要插入的數(shù)據(jù)主鍵改成9,則:

很顯然插入成功了。再重新打開表看一下:

ok,數(shù)據(jù)是插入成功的。
其他可能造成報錯的情況
還有一種情況會觸發(fā)這個報錯。就以上面的例子來說,在沒有id為9的這條數(shù)據(jù)時,我插入這條數(shù)據(jù),沒有問題,不會報錯,也能插入成功。但如果再運(yùn)行剛剛那句話,就不行了。因?yàn)?已經(jīng)插入了,再運(yùn)行一遍,就等于再插入主鍵為9的這條數(shù)據(jù),這就又會造成主鍵沖突。
還有一種情況也會觸發(fā)這個報錯,就是沒有設(shè)置主鍵遞增
要么用可視化工具Navicat Premium 16勾選自動遞增。
要么在命令行里設(shè)置主鍵遞增。


總結(jié)解決方案
綜上所述,這個錯誤提示是因?yàn)樵诓迦霐?shù)據(jù)時,插入了一個已經(jīng)存在的主鍵值,導(dǎo)致沖突。解決方案如下:
- 確認(rèn)是否插入了重復(fù)的數(shù)據(jù),可以通過查詢數(shù)據(jù)庫來查看是否有重復(fù)的主鍵值。
- 如果是插入重復(fù)數(shù)據(jù)導(dǎo)致的錯誤,可以通過修改數(shù)據(jù)或者刪除重復(fù)數(shù)據(jù)來解決。
- 如果是其他原因?qū)е碌腻e誤,可以嘗試重新創(chuàng)建表格或者修改表格結(jié)構(gòu)來解決。
以上就是MySql報錯:Duplicate entry ‘10‘ for key ‘PRIMARY‘的解決方案的詳細(xì)內(nèi)容,更多關(guān)于Duplicate entry ‘10‘ for key ‘PRIMARY‘的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
簡單講解MySQL的數(shù)據(jù)庫復(fù)制方法
這篇文章主要介紹了簡單講解MySQL的數(shù)據(jù)庫復(fù)制方法,利用到了常見的mysqldump工具,需要的朋友可以參考下2015-11-11
自動恢復(fù)MySQL數(shù)據(jù)庫的日志文件思路分享及解決方案
本文主要講訴如何自動恢復(fù)mysql數(shù)據(jù)庫的日志文件,喜歡的在服務(wù)器或者數(shù)據(jù)庫上直接操作的兄弟們你值得收藏下!2014-08-08
mysql性能優(yōu)化工具--tuner-primer使用介紹
這篇文章主要介紹了mysql性能優(yōu)化工具--tuner-primer的使用方法與返回數(shù)據(jù)分析,需要的朋友可以參考下2016-05-05
SQL匯總統(tǒng)計與GROUP BY過濾查詢實(shí)現(xiàn)
這篇文章主要介紹了SQL匯總統(tǒng)計與GROUP BY過濾查詢實(shí)現(xiàn),GROUP BY 實(shí)質(zhì)是先排序后分組,遵照索引建的最佳左前綴。當(dāng)無法使用索引時,增大max_length_for_sort_data和sort_buffer參數(shù)的值2023-01-01

