MySql報(bào)錯(cuò):Duplicate entry ‘10‘ for key ‘PRIMARY‘的解決方案
翻譯錯(cuò)誤
經(jīng)常遇到這個(gè)問題,今天我把這個(gè)問題記錄下來,以后如果有其他人遇到相同的問題,不至于困惑。我自己也作為一種學(xué)習(xí)中的出錯(cuò)記錄,錯(cuò)題本,提醒自己。
在操作數(shù)據(jù)庫的時(shí)候,經(jīng)常會(huì)出現(xiàn)Duplicate entry ‘10’ for key 'PRIMARY’這樣的報(bào)錯(cuò),這是什么意思呢?
我去翻譯了一下,翻譯結(jié)果如下:
所以這種問題的出現(xiàn)就代表鍵名重復(fù)了
先正常制作表格
定義表格表頭的時(shí)候,一般會(huì)設(shè)置id為主鍵(因?yàn)閕d具有唯一性,且簡單)
以下是用Navicat Premium 16制作的一個(gè)表格
錯(cuò)一遍(體驗(yàn)報(bào)錯(cuò))
在此表格中,id已經(jīng)有1,2,3,4,5,6,7,8了,如果此時(shí)我插入的數(shù)據(jù)主鍵是8,就會(huì)出現(xiàn)如下結(jié)果:
是的,報(bào)這個(gè)錯(cuò)了。因?yàn)?這個(gè)主鍵是存在的,現(xiàn)在插入的數(shù)據(jù),主鍵還是8,就造成了主鍵重復(fù)的沖突,所以會(huì)報(bào)這個(gè)錯(cuò),同時(shí)數(shù)據(jù)也是插入不進(jìn)去的。
找到報(bào)錯(cuò)原因,并改正
如果我們把需要插入的數(shù)據(jù)主鍵改成9,則:
很顯然插入成功了。再重新打開表看一下:
ok,數(shù)據(jù)是插入成功的。
其他可能造成報(bào)錯(cuò)的情況
還有一種情況會(huì)觸發(fā)這個(gè)報(bào)錯(cuò)。就以上面的例子來說,在沒有id為9的這條數(shù)據(jù)時(shí),我插入這條數(shù)據(jù),沒有問題,不會(huì)報(bào)錯(cuò),也能插入成功。但如果再運(yùn)行剛剛那句話,就不行了。因?yàn)?已經(jīng)插入了,再運(yùn)行一遍,就等于再插入主鍵為9的這條數(shù)據(jù),這就又會(huì)造成主鍵沖突。
還有一種情況也會(huì)觸發(fā)這個(gè)報(bào)錯(cuò),就是沒有設(shè)置主鍵遞增
要么用可視化工具Navicat Premium 16勾選自動(dòng)遞增。
要么在命令行里設(shè)置主鍵遞增。
總結(jié)解決方案
綜上所述,這個(gè)錯(cuò)誤提示是因?yàn)樵诓迦霐?shù)據(jù)時(shí),插入了一個(gè)已經(jīng)存在的主鍵值,導(dǎo)致沖突。解決方案如下:
- 確認(rèn)是否插入了重復(fù)的數(shù)據(jù),可以通過查詢數(shù)據(jù)庫來查看是否有重復(fù)的主鍵值。
- 如果是插入重復(fù)數(shù)據(jù)導(dǎo)致的錯(cuò)誤,可以通過修改數(shù)據(jù)或者刪除重復(fù)數(shù)據(jù)來解決。
- 如果是其他原因?qū)е碌腻e(cuò)誤,可以嘗試重新創(chuàng)建表格或者修改表格結(jié)構(gòu)來解決。
以上就是MySql報(bào)錯(cuò):Duplicate entry ‘10‘ for key ‘PRIMARY‘的解決方案的詳細(xì)內(nèi)容,更多關(guān)于Duplicate entry ‘10‘ for key ‘PRIMARY‘的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MySQL復(fù)制表結(jié)構(gòu)和內(nèi)容到另一張表中的SQL語句
這篇文章主要介紹了MySQL復(fù)制表結(jié)構(gòu)和內(nèi)容到另一張表中的SQL語句,需要的朋友可以參考下2014-07-07將圖片儲(chǔ)存在MySQL數(shù)據(jù)庫中的幾種方法
今天小編就為大家分享一篇關(guān)于將圖片儲(chǔ)存在MySQL數(shù)據(jù)庫中的幾種方法,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03Mysql導(dǎo)入導(dǎo)出工具M(jìn)ysqldump和Source命令用法詳解
Mysql本身提供了命令行導(dǎo)出工具M(jìn)ysqldump和Mysql Source導(dǎo)入命令進(jìn)行SQL數(shù)據(jù)導(dǎo)入導(dǎo)出工作,通過Mysql命令行導(dǎo)出工具M(jìn)ysqldump命令能夠?qū)ysql數(shù)據(jù)導(dǎo)出為文本格式(txt)的SQL文件,通過Mysql Source命令能夠?qū)QL文件導(dǎo)入Mysql數(shù)據(jù)庫中,下面通過Mysql導(dǎo)入導(dǎo)出SQL實(shí)例詳解Mysqldump和Source命令的用法2012-09-09MySQL數(shù)據(jù)庫遷移到Oracle數(shù)據(jù)庫的完整步驟記錄
在研發(fā)過程中可能會(huì)用到將表數(shù)據(jù)庫中的表結(jié)構(gòu)及數(shù)據(jù)遷移到另外一種數(shù)據(jù)庫中,比如說從mysql中遷移到oracle中,這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫遷移到Oracle數(shù)據(jù)庫的完整步驟,需要的朋友可以參考下2024-06-06MySQL用命令行運(yùn)行sql文件的詳細(xì)圖文教程
最近重新踩了一下mysql 這邊的坑,記錄一下自己忽略的地方,下面這篇文章主要給大家介紹了關(guān)于MySQL用命令行運(yùn)行sql文件的詳細(xì)圖文教程,文中通過實(shí)例代碼的非常詳細(xì),需要的朋友可以參考下2023-01-01MySQL函數(shù)date_format()日期格式轉(zhuǎn)換的實(shí)現(xiàn)
本文主要介紹了MySQL函數(shù)date_format()日期格式轉(zhuǎn)換的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08