2012-05-24 28 views
2

所以我就截斷我的表,但現在我的主鍵不會自動遞增。每次我添加第二個項目表時,它回來與1062:重複項'0'的關鍵'主'Mysql的截斷表,自動遞增不工作

我認爲當你截斷表時,它會重置自動增量回到1

我搜索周圍什麼我可以做,但我接觸過很多人說剛截斷。

我做什麼

"TRUNCATE TABLE mytable;" 

我一定是做錯了什麼。

+0

你能提供的'DESCRIBE mytable'輸出。 – mellamokb

+0

確保您的主鍵列仍被定義爲auto_increment。 –

+0

參考http://www.softwareprojects.com/resources/programming/t-how-to-fix-mysql-duplicate-entry-for-key-primary-o-1844.html –

回答

9

此錯誤不影響MySQL 5.0,它是可重複的6.0和5.1.23和5.1BK。

Refer this link for proof

以下是容易得到的和有效的解決方法是在表將被截斷之後,以改變AUTOINC值。

重新初始化截斷右後AUTOINC值

alter table tablename AUTO_INCREMENT = n;/*集合n如所期望*/

+0

謝謝,我有一種感覺,它是一個錯誤,但我不確定 –

0

從MySQL 5.0.13中,AUTO_INCREMENT計數器復位到零由TRUNCATE TABLE,而不管是否有一個外鍵約束。

所有你需要做的是:

SET FOREIGN_KEY_CHECKS = 0;

截斷你的表,並改回

SET FOREIGN_KEY_CHECKS = 1;

TRUNCATE一旦被激發,表處理程序不記得上次使用的AUTO_INCREMENT值,而是開始從一開始計數。 即使對於MyISAM和InnoDB,這通常也不會重用序列值。

0

用戶這個查詢它的工作。

ALTER TABLE table_name CHANGE table_idtable_id INT(11)NOT NULL AUTO_INCREMENT