我有一个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服务而不是优化表时,会发生同样的事情
答案 0 :(得分:2)
似乎MySQL已经在努力解决这个问题 - http://bugs.mysql.com/bug.php?id=18274。
但与此同时,您可以手动将自动增量值设置为OPTIMIZE TABLE完成后的任何值。
顺便说一句,是否有一个特定的原因,您希望将自动增量值保持为OPTIMIZE之前的值?因为我不认为自动增量重置会破坏任何内容,除非您的外键没有DELETE CASCADE。