Mysql截断表,自动增量不起作用

时间:2012-05-24 20:07:27

标签: php mysql

所以我只是截断了我的表,但现在我的主键不会自动增加。每次我在表格中添加第二项时,都会返回1062:重复条目'0'表示关键'PRIMARY'

我想当你截断一个表时,它只会将自动增量重置为1.

我搜索我能做什么,但我遇到很多人说只是截断。

我做了什么

"TRUNCATE TABLE mytable;"

我一定做错了。

3 个答案:

答案 0 :(得分: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 * /

答案 1 :(得分:0)

从MySQL 5.0.13开始,无论是否存在外键约束,AUTO_INCREMENT计数器都会被TRUNCATE TABLE重置为零。

您需要做的就是:

SET FOREIGN_KEY_CHECKS = 0;

截断表并将其更改回

SET FOREIGN_KEY_CHECKS = 1;

触发TRUNCATE后,表处理程序不记得上次使用的AUTO_INCREMENT值,但从头开始计数。 即使对于通常不重用序列值的MyISAM和InnoDB也是如此。

答案 2 :(得分:0)

使用此查询它将起作用。

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