MySQL意外地重新使用已删除的自动增量值

时间:2016-01-12 10:18:21

标签: mysql innodb auto-increment amazon-rds

我在带有InnoDB表的Amazon RDS多可用区上运行MySQL服务器5.6.21,我遇到的行为根据我在文档中读到的内容不应该发生。

当删除最高自动增量值时,MySQL会重新使用自动增量值。例如,假设我有一个表格,其中包含这些自动增量值:1, 2, 3, 4, 5。如果删除了值5,那么MySQL将在下一次插入时重新使用它。

通过阅读我可以看到的所有相关MySQL文档,除非重新启动服务器,否则这是不可能的。服务器没有重新启动,我看不到这种行为的解释。

这会导致我的应用程序出现严重问题,该问题会引用其他地方的已分配自动增量值进行审核。 MySQL应该根据文档表现的方式正是我需要它表现的方式。我在互联网上搜索过,找不到其他遇到此特定问题的人。我觉得这与RDS /复制有关,但我找不到任何可以解释这一点的东西。

相关的MySQL服务器设置:

  

auto_increment_increment = 1
  auto_increment_offset = 1
  innodb_autoinc_lock_mode = 1

我已经缩小了原因,以排除重新使用这些值的insert语句。这是因为如果我删除具有最高自动增量值的行(假设它是5),然后通过查看信息模式立即检查下一个自动增量值,它将按预期显示6。但是,如果我等待几秒/分钟然后刷新信息架构,则下一个自动增量值将突然变为5,而不会运行其他查询!

有什么想法吗?提前谢谢。

0 个答案:

没有答案