使用flyway进行数据库版本控制。
flyway配置
# 当迁移发现数据库非空且存在没有元数据的表时,自动执行基准迁移,新建schema_version表
baseline-on-migrate: true
# 开始执行基准迁移时对现有的schema的版本打标签,默认值为1
baseline-version: 1.0.0
产品初始化部署时,flyway等待pgsql数据库运行后,连接数据库执行初始化脚本。
初始化脚本序号为
但是在flyway pod 启动后 创建flyway_schema_history表并自动插入了一条version=1.0.0 and type=BASELINE的记录。导致实际的V1.0.0__init_data.sql表数据不执行,直接执行V1.0.1__create_test.sql脚本了。
多次重装初始化测试一直搞不清楚为什么有时候创建flyway_schema_history表时自动插入 type=BASELINE的记录,有时候不插入。
经过多次重装初始化慢慢发现,每次自动插入记录的时候,数据库里有其他程序创建的表(有时候在flyway执行之前已经创建完成)。而这个开启基准迁移的参数为true。
baseline-on-migrate: true
表示只有当前数据库中存在其他表时会自动插入 baseline-version: 1.0.0 指定的版本,从而绕过V1.0.0版本的初始化sql。