1. 程式人生 > >mysql 主鍵自增 但是報主鍵重複的異常問題探究- Duplicate entry

mysql 主鍵自增 但是報主鍵重複的異常問題探究- Duplicate entry

1、mysql資料庫設定資料庫主鍵自增的規律

·第一,在主鍵欄位上增加  AUTO_INCREMENT

`id` int(8) NOT NULL AUTO_INCREMENT COMMENT '主鍵',

·第二,預設表的第一條資料是從1開始計數的,但是在建表語句中是可以修改這個起始值的,比如下面就是設定為11為基值,下一次插入的是12

CREATE TABLE 'table_name'(

)ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 COMMENT='某某表'

而且通過視覺化工具可以發現,這個基本值一直是在變化的,即每次增加一個,這個自動增量的意思是,當自動插入下一個資料時,主鍵的為8


2、問題描述

在一個操作過程中,出現了這樣的描述,即6這個主鍵在資料庫中已經存在了

 Duplicate entry '6' for key 'PRIMARY'

3、問題分析

網上大概說明有這麼幾種情況

1、資料庫該欄位已經自增到了最大值

2、資料庫表結構損壞(一般是由於頻繁手動修改資料導致的)

3、由於手動插入了較大資料,導致mysql自增到這個較大數值時主鍵重複了

4、問題復現

很遺憾在後來的操作中,問題並沒有能夠復現

但是在一個相隔很多天的試驗中出現了另外一個問題

開始主鍵是自增的,一致自增到了5,後來修改了資料庫基數為100

然後自增了一些資料

過來兩天,再次執行自增的時候居然報錯了,而且不是明顯的錯誤

後來把100等之後新增的資料刪除,自增測試程式又正常了

5、問題總結

對於mysql 資料庫而言,在自增主鍵的時候,手動修改資料要比較慎重,最好遵循三個原則

1、手動新增資料和自動新增資料不要混淆,即手動的就是手動的,避免和自動新增資料的主鍵重複

2、手動更改資料的時候,不要更改主鍵,只是修改其餘欄位

3、自增資料情況下,不要修改表的自增基數