2012-05-24 24 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