我在带有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
,而不会运行其他查询!
有什么想法吗?提前谢谢。