所以我只是截断了我的表,但现在我的主键不会自动递增。每次我向表中添加第二个项目时,它都会返回 1062: Duplicate entry '0' for key 'PRIMARY'
我认为当你截断一个表时,它只会将自动增量重置回 1。
我四处寻找我能做什么,但我遇到很多人说只是截断。
我做了什么
"TRUNCATE TABLE mytable;"
我一定做错了什么。
此错误不会影响 Mysql 5.0,并且在 6.0 和 5.1.23 和 5.1BK 上是可重复的。
以下是现成的有效解决方法是在表被截断后更改 autoinc 值。
截断后立即重新初始化 autoinc 值
alter table tablename AUTO_INCREMENT = n;
/* 根据需要设置 n */
从 MySQL 5.0.13 开始,AUTO_INCREMENT 计数器被 TRUNCATE TABLE 重置为零,无论是否存在外键约束。
您需要做的就是:
设置 FOREIGN_KEY_CHECKS=0;
截断您的表格并将其更改回
设置 FOREIGN_KEY_CHECKS=1;
一旦 TRUNCATE 被触发,表处理程序就不会记住上次使用的 AUTO_INCREMENT 值,而是从头开始计数。即使对于通常不重用序列值的 MyISAM 和 InnoDB 也是如此。
使用此查询它将起作用。
ALTER TABLE table_name
CHANGE table_id
table_id
INT(11) NOT NULL AUTO_INCREMENT