服务器重启后MySql自动增量计数器重置

gip*_*ani 6 mysql innodb auto-increment mysql-5.5

我需要一种方法来保持 mysql 服务重启之间的自动递增计数器。

正如文档所述,重启 mysql 自动增量计数器默认从 max(id)+1 开始。如何保留最后一个自动增量值?

这对我来说是个大问题。我正在使用 envers 来保持实体审计。我得到的错误与我删除的“最后一行”一样多。

假设我开始将数据插入到一个空表中。假设插入 10 行。然后假设删除最后 8 个。在我的表中,我将有 2 个实体作为结果,id 分别为 1 和 2。在审计表中,我将拥有所有 10 个实体,ID 为 1 到 10:ID 为 3 到 10 的实体将有 2 个操作:创建操作和删除操作。

自动增量计数器现在在主表中设置为 11。重新启动mysql服务自动递增计数器变为3。所以如果我插入一个新实体,它将以id 3保存。但在审计表中已经有一个id = 3的实体。该实体已经被标记为创建和删除. 它会在更新/删除操作期间导致断言失败,因为 envers 无法处理这种不一致的状态。

谢谢

Eva*_*oll 2

MySQL修复

14.5 年后,这个问题在 MySQL 8.0 版本中得到了修复

[10 月 6 日 16:40] Daniel Price 由开发者发布:由WL#6204 在 8.0.0 中修复。

MariaDB 修复

这也是2017 年 7 月 12 日发布的 MariaDB 10.2.4

我发现这个改变最终被添加到了第二象限博客上,