如何重置 AUTO_INCREMENT

How to reset the AUTO_INCREMENT

我在网上搜索,没有找到不删除 auto_increment.But 字段的解决方案,我在 phpmyadmin 中指出,当我单击“选项”时,我看到 Auto_increment ,我试着把它放在 1 但没有任何改变。那么,是否有重置 auto_increment 的解决方案?

谢谢

PS : InnoDB

我不知道你所说的重置是什么意思?但是如果你设置了 AUTO_INCREMENT 现在你想删除它。你可以使用这个:

ALTER TABLE mytable CHANGE my_col my_col INT(10) UNSIGNED NOT NULL

如果要预约专柜:

ALTER TABLE tablename AUTO_INCREMENT = 1

InnoDB

ALTER TABLE a AUTO_INCREMENT=1 ENGINE=innoDB;

只要table上有数据就不能重置,否则需要先删除所有table。

ALTER TABLE tablename AUTO_INCREMENT = value;

执行以下查询:

改变TABLEyour table name auto_increment = 1;

在每个人都对任何人是否应该有重置 AUTO_INCREMENT 计数器的正当理由感到骄傲之前,在某些情况下它是有意义的。生产数据库不是这个地方,但开发和 QA 环境是不同的。

我已经为开发环境中的 Fixtures 创建了自己的代码,更不用说需要反复清除的单元测试数据库了。有时您希望能够截断表而不是进行完整的重新创建。

这是一个完全合理的请求,并且可能有充分的理由,特别是如果您正在计算字节数并使用 UNSIGNED tinyint 和类似的字节优化与您的一些外键。

如前所述,解决方案是:

ALTER TABLE tablename AUTO_INCREMENT = 1

但是,如果定义了外键约束,这将不起作用。

InnoDB 约束的神奇之处 "get around fk constraints and other chicken-and-egg problems" 是:

SET foreign_key_checks = 0;

当事情按照您需要的方式归零后,您可以通过以下方式重新打开约束检查:

SET foreign_key_checks = 1;

这似乎是 OP 遇到的实际问题。

DBCC CHECKIDENT ('tablename', RESEED, 0);