如何在OPTIMIZE TABLE之后保持自动增量值?

时间:2011-11-02 12:58:15

标签: mysql auto-increment

我有一个InnoDB表,我经常在其中插入和删除行。

我注意到在最后几行执行delete语句并运行optimize table后,自动增量会回落到max(id)+1

考虑以下事件序列

表:请求

Auto Increment is: 150, INSERT ROW (id 150)
Auto Increment is: 151, INSERT ROW (id 151)
Auto Increment is: 152, INSERT ROW (id 152)
Auto Increment is: 154

DELETE from requests where id in (151,152)

OPTIMIZE TABLE requests

Auto increment is: 151.

我想找到一种避免这种情况的方法。

感谢任何帮助。

编辑:我刚试过,当我重新启动mysql服务而不是优化表时,会发生同样的事情

1 个答案:

答案 0 :(得分:2)

似乎MySQL已经在努力解决这个问题 - http://bugs.mysql.com/bug.php?id=18274

但与此同时,您可以手动将自动增量值设置为OPTIMIZE TABLE完成后的任何值。

顺便说一句,是否有一个特定的原因,您希望将自动增量值保持为OPTIMIZE之前的值?因为我不认为自动增量重置会破坏任何内容,除非您的外键没有DELETE CASCADE。