MySql 有时会自动回滚

MySql make like a rollback some times automatically

我们有很多带有 POS 系统的计算机,每台计算机都有一个本地数据库,我们在其中注册所有销售,并且在一天结束时,我们将数据插入主数据库,目前我们有观察到在某些计算机中,MySQL make 就像一个回滚,例如,当我们在 table 配置中安装系统时具有自动递增 id,并将首次销售设置为 id 1000,这id 在 1001、1002、1003 等的另一次销售中发生变化。但是有一天,当 id 为 5000 时,数据库重置了 tables 中的所有数据并在 1000 中重新开始,你知道会发生什么吗正在发生。

谢谢!

需要更多详细信息才能了解发生了什么。这里有一些信息可以解释它:

在 MySQL 关机或崩溃(电源故障等)并重新启动后,首先要为每个 InnoDB table 做一个 AUTO_INCREMENT 所以将下一个 id 计算为 SELECT MAX(id)+1 FROM tbl.

即使这不能解释你的情况,这里有一个可能会咬你的陷阱:

  1. 创建 id 1234(和 COMMIT 它)
  2. 删除 1234(和 COMMIT
  3. 重新启动mysql(正常或由于崩溃)
  4. 下一个要创建的 ID 将是 1234。如果您假设一个 ID 不能重复使用,这可能会很糟糕。

如果没有重新启动,第 4 步将创建 1235,而 1234 将永远存在 "burned"。

(注意:版本 8.0 更改了此行为。)