MySQL - 无法将表的自动递增值设置为较低的值

时间:2013-05-26 18:21:00

标签: mysql phpmyadmin auto-increment

我曾经能够在删除表中的行后将自动增量值设置为低于现有值,但现在我无法这样做(我只能将其设置为高于当前值)。我想知道这是因为升级MySQL(5.6.11)/ PHPMyAdmin(3.5.8),还是我仍然能够做到这一点?

3 个答案:

答案 0 :(得分:10)

您可以通过重新启动MySQL服务器来重置隐藏值。 InnoDB在重新启动后重新计算自动增量值。

更新你的行,然后重新启动mysql deamon。这可以防止你重建你的桌子,这可能是一个大桌子的支柱。

答案 1 :(得分:9)

从手册:

You cannot reset the counter to a value less than or equal to any that have 
already been used. For MyISAM, if the value is less than or equal to the 
maximum value currently in the AUTO_INCREMENT column, the value is reset 
to the current maximum plus one. For InnoDB, if the value is less than the 
current maximum value in the column, no error occurs and the current sequence 
value is not changed.

简而言之,它取决于所使用的存储引擎。

答案 2 :(得分:3)

感谢大家的正确答案。

InnoDB的解决方法

  • 转出桌子,
  • 更改转储文件中的自动增量值,
  • 重新加载

请确保在重新装入之前放下桌子;你可能需要通过以下方式禁用密钥检查 SET foreign_key_checks = 0;