2

所以我只是截断了我的表,但现在我的主键不会自动递增。每次我向表中添加第二个项目时,它都会返回 1062: Duplicate entry '0' for key 'PRIMARY'

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

我四处寻找我能做什么,但我遇到很多人说只是截断。

我做了什么

"TRUNCATE TABLE mytable;"

我一定做错了什么。

4

3 回答 3

9

此错误不会影响 Mysql 5.0,并且在 6.0 和 5.1.23 和 5.1BK 上是可重复的。

请参阅此链接以获取证据

以下是现成的有效解决方法是在表被截断后更改 autoinc 值。

截断后立即重新初始化 autoinc 值

alter table tablename AUTO_INCREMENT = n;/* 根据需要设置 n */

于 2012-05-24T20:16:40.257 回答
0

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

您需要做的就是:

设置 FOREIGN_KEY_CHECKS=0;

截断您的表格并将其更改回

设置 FOREIGN_KEY_CHECKS=1;

一旦 TRUNCATE 被触发,表处理程序就不会记住上次使用的 AUTO_INCREMENT 值,而是从头开始计数。即使对于通常不重用序列值的 MyISAM 和 InnoDB 也是如此。

于 2013-07-24T07:13:59.840 回答
0

使用此查询它将起作用。

ALTER TABLE table_nameCHANGE table_id table_idINT(11) NOT NULL AUTO_INCREMENT

于 2013-08-05T11:05:11.523 回答