我们当前正在使用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或更高版本),我必须做出哪些语句或配置?
答案 0 :(得分:0)
该ALTER
的唯一用途是立即INSERT
行并为其赋予值1000000。插入该行后,该子句将不再起作用-除非您删除所有行,需要重新启动该值。
一种替代方法是显式提供第一个INSERT
的值。
由于我还没有找到使用该子句的“有效”理由,请解释一下您要做什么。也许我们可以想到一个可用的解决方法。
未来,我认为AI值将保留在索引中将会发生变化。这已经是MySQL 8.0的功能。