久久无码中文字幕_日韩精品无码一本二本三_久久精品呦女暗网_欧美一级夜夜爽_久久精品国产99久久99久久久

21
2024/06

mysql 自增字段報(bào)錯(cuò) Duplicate entry for key 'PRIMARY' .

發(fā)布時(shí)間:2024-06-21 14:15:21
發(fā)布者:已經(jīng)寫了
瀏覽量:
0

Mysql字段自增,通常用于表的主鍵,用來確保每次插入一條新數(shù)據(jù)的時(shí)候,該列的值在表中是一個(gè)唯一值,該字段通常設(shè)置為主鍵+自增,PRIMARY KEY (ID) AUTO_INCREMENT。

但是今天在重啟一個(gè)之前的功能的時(shí)候,竟然報(bào)錯(cuò)了。這個(gè)表之前是記錄用戶的操作記錄的一個(gè)LOG表,內(nèi)容很多很長,中間有一段時(shí)間已經(jīng)不用了因?yàn)檎加每臻g和影響效率,最近想要重新開始繼續(xù)記錄用戶的操作記錄,結(jié)果就是重啟之后,插入log記錄的時(shí)候就報(bào)錯(cuò)了:Duplicate entry for key 'PRIMARY' .這段報(bào)錯(cuò)的意思就是主鍵id重復(fù)了。當(dāng)時(shí)就有點(diǎn)懵,因?yàn)槲矣浀檬菦]有指定主鍵id的值,應(yīng)該是自增,咋會(huì)報(bào)這個(gè)錯(cuò)。

mysql 自增字段報(bào)錯(cuò) Duplicate entry for key 'PRIMARY' .

知道報(bào)錯(cuò)的原因,那么解決這個(gè)報(bào)錯(cuò)的思路就很清晰了,我們可以有多種方式來解決:

1、如果是在寫入的時(shí)候指定了id的值,那么我們就應(yīng)該是不指定id的值,讓mysql自動(dòng)處理自增。

2、重置自增字段,使用alter table重置自增字段。

3、使用insert ignore來忽略重復(fù)的插入操作,改成更新內(nèi)容

但是,我這個(gè)情況好像不在其中。因?yàn)槲覜]有指定id,但是我也不想通過ignore來忽略這個(gè)報(bào)錯(cuò),我覺得可能是表的問題,我決定修復(fù)一下表結(jié)構(gòu)。在mysql中,我們可以使用repair table 來修復(fù) myisam 和 innodb類型的表,mysql還提供check table來檢測表是否存在錯(cuò)誤或者損壞。

在我執(zhí)行了repair table修復(fù)表之后,在測一測是否可以正常插入新數(shù)據(jù)的時(shí)候就發(fā)現(xiàn)可以正常寫入數(shù)據(jù)了。所以在我們遇到這種報(bào)錯(cuò)的時(shí)候,如果我門的代碼沒有問題的時(shí)候,可以check table來檢測一下表時(shí)候有問題,并且使用repair table來修復(fù)表嘗試是否可以解決問題。

關(guān)鍵詞:
返回列表