MariaDB中的AUTO_INCREMENT仅保留在内存中

时间:2018-11-21 16:56:22

标签: mariadb

我们当前正在使用MariaDB 10.1进行开发。初始化数据库时,我们运行迁移脚本,该脚本为特定表设置AUTO_INCREMENT值:

ALTER TABLE table_name AUTO_INCREMENT=1000000;

动机
我们出于开发目的在Docker映像中运行MariaDB,即我们可以随时销毁和重建数据库。但是,该特定表需要使用AUTO_INCREMENT行的起始值进行初始化。因此,我们在构建Docker映像时将脚本复制到/docker-entrypoint-initdb.d

但是,这只有在INSERT之后才会生效。

来自MariaDB知识库:

  

直到MariaDB 10.2.3,InnoDB和XtraDB使用自动递增计数器   存储在内存中。服务器重新启动时,计数器为   重新初始化,取消任何AUTO_INCREMENT = N的影响   表语句中的选项。

https://mariadb.com/kb/en/library/auto_increment-handling-in-xtradbinnodb/

但是我找不到解决方法。为了使上述SQL语句有效(我准备升级到MariaDB 10.2.4或更高版本),我必须做出哪些语句或配置?

1 个答案:

答案 0 :(得分:0)

ALTER的唯一用途是立即INSERT行并为其赋予值1000000。插入该行后,该子句将不再起作用-除非您删除所有行,需要重新启动该值。

一种替代方法是显式提供第一个INSERT的值。

由于我还没有找到使用该子句的“有效”理由,请解释一下您要做什么。也许我们可以想到一个可用的解决方法。

未来,我认为AI值将保留在索引中将会发生变化。这已经是MySQL 8.0的功能。