1:提示信息翻譯:插入 xxx 使索引1重復
分析:索引如果是primary unique這兩兩種,那么數據表的數據對應的這個字段就必須保證其每條記錄的唯一性。否則就會產生這個錯誤。
一般發生在對數據庫寫操作的時候,例如Discuz!4.1論壇程序要求所有會員的用戶名username必須唯一,即username 的索引是unique,這時如果強行往cdb_members表
里插入一個已有的username的記錄就會發上這個錯誤,或者將一條記錄的username更新為已有的一個username。
改變表結構的時候也有可能導致這個錯誤。例如 Discuz!4.0論壇的數據庫中cdb_members.username 的索引類型是 index 這個時候是允許有相同username的記錄存在
的,在升級到4.1的時候,因為要將username的索引由原來的index變為unique。如果這時cdb_members里存在有相同的username的記錄,那么就會引發這個錯誤。
導出數據據時有時會因為一些原因(作者目前還不清楚)導致同一條記錄被重復導出,那么這個備份數據在導入的時候出現這個錯誤是在所難免的了。
修改了auto_increment的值,致使“下一個 Autoindex”為一條已經存在的記錄
2:可能是你的數據表中像 ID 這樣的自增字段AUTO_INCREMENT出現了問題,使用AUTO_INCREMENT時,應注意以下幾點:
AUTO_INCREMENT是數據列的一種屬性,只適用於整數類型數據列。
設置AUTO_INCREMENT屬性的數據列應該是一個正數序列,所以應該把該數據列聲明為UNSIGNED,這樣序列的編號個可增加一倍。
AUTO_INCREMENT數據列必須有唯一索引,以避免序號重復。
AUTO_INCREMENT數據列必須具備NOT NULL屬性。
AUTO_INCREMENT數據列序號的最大值受該列的數據類型約束,如TINYINT數據列的最大編號是127,如加上UNSIGNED,則最大為255。一旦達到上限,AUTO_INCREMENT就會
失效。
3:根據以上信息你沒有解決的話,請繼續操作:
有可能是因為數據表文件損害導致,可用MySQL的修復工具myisamchk 工具修復。
在CMD下面輸入:
myisamchk cdb_posts.myi -r
修復數據表就OK了!