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

pgky5nke  于 2023-05-28  发布在  Mysql
关注(0)|答案(3)|浏览(179)

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

1u4esq0p

1u4esq0p1#

您可以通过重新启动MySQL服务器来重置隐藏值。InnoDB重新计算重启后的自动增量值。
更新你的行,并重新启动mysql守护进程。这可以防止你重建你的表什么可以是一个大表hastle。

jtjikinw

jtjikinw2#

来自手册:

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.

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

gmxoilav

gmxoilav3#

谢谢你的正确答案,大人物。
InnoDB的解决方法

  • 把table倒出来
  • 更改转储文件中的自动增量值,以及
  • 重新加载

只要确保在重新加载之前将表放下;您可能需要通过设置foreign_key_checks = 0来禁用密钥检查;

相关问题