【发布时间】:2018-08-27 08:46:32
【问题描述】:
是否有可能在某个时候,表的 ID 高于当前的 AUTO_INCREMENT 值?
我有一张像队列一样的桌子。我每秒插入/删除 10-30 行,需要自动递增列才能继续。当我现在插入行时,我得到一个回收的自动增量(id),例如:374097。
这是表格:
CREATE TABLE `test_table` (
`id` INT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
COLLATE='utf8_bin'
ENGINE=InnoDB
AUTO_INCREMENT=374098;
还有另一个表使用这个id 作为外键。
SELECT max(batch_id) from secondary_table;
返回:397959。 在某些时候,test_table 的 ID 最高为 397959,而 AUTO_INCREMENT 则低得多!
我在 https://dev.mysql.com/doc/refman/8.0/en/replication-features-auto-increment.html 上读到了这个,我应该是安全的 - AUTO_INCREMENT 设置在一个简单的主键上。
知道我是否可以像这样继续使用 AUTO_INCREMENT,还是需要使用自己提供的 ID?
【问题讨论】:
-
你用的是什么版本的mysql?
-
你应该阅读这个serverfault.com/questions/228690/…并参考你的mysql版本的手册。
-
@P.Salmon:你说得对,我把它漏掉了。它实际上是 AWS Aurora,我觉得它是最新的 MySQL 并进行了一些调整,但实际上“与 MySQL 5.7 兼容”。
标签: mysql amazon-aurora