【问题标题】:MySQL - auto increment not resetingMySQL - 自动增量不重置
【发布时间】:2019-06-10 16:55:51
【问题描述】:

我删除了表中的前 1000 行,我试图将 auto_increment 设置为 1,但它只是将编号自动设置为最大 ID 值+1 .. 我怎样才能让它从 1 开始编号并继续到1000?

ALTER TABLE T auto_increment = 1;

【问题讨论】:

  • 简答:你不能!请阅读:What is the XY problem?
  • @PaulSpiegel 所以即使数字 1 在过去我们有更大的值时已被删除,也不可能给出一个新的行号 1,对吗?
  • 不使用 AUTO_INCREMENT。正如您已经知道的那样,AI 值将被重置为“最大 ID 值+1”。这是记录在案的行为。对于 InnoDB - 请参阅:AUTO_INCREMENT Handling in InnoDB“ALTER TABLE ... AUTO_INCREMENT = N 只能将自动增量计数器值更改为大于当前最大值的值。”
  • " 所以即使数字 1 过去已被删除,也不可能提供新的行号 1" - 您可以通过将 ID 设置为特定(非重复)值来手动完成一个 INSERT 或 UPDATE 语句。但是,使用 AOUTO_INCREMENT 功能就没有意义了。
  • 为什么不能将表中的数据放入新表,删除原始表,重新创建原始表,然后将数据重新加载到该表中?

标签: mysql auto-increment


【解决方案1】:

您无法重置 INNODB 表的自动增量。

谢谢

【讨论】: