Spring Boot集成Flyway时V1__init.sql脚本未执行问题排查
问题原因及解决方案
你的V1__init.sql脚本没执行,核心问题出在spring.flyway.baselineOnMigrate = true这个配置和脚本版本号的冲突上:
当开启baselineOnMigrate=true时,Flyway会把当前数据库的状态标记为基线版本1(也就是你在flyway_schema_history里看到的<< Flyway Baseline >>记录)。而你的脚本命名是V1__init.sql,版本号同样是1,Flyway会判定这个版本已经被基线覆盖,因此不会执行该脚本。
解决方法(任选其一即可)
1. 修改SQL脚本的版本号
将V1__init.sql重命名为V2__init.sql,这样Flyway会识别到这是基线版本1之后的新版本,应用启动时就会自动执行这个脚本。
2. 调整Flyway的基线版本
在application.properties里添加或修改基线版本配置:
spring.flyway.baseline-version=0
配置后,Flyway会把当前数据库状态标记为版本0,你的V1__init.sql作为版本1的脚本,就能被正常执行。
3. 移除基线配置(适用于空数据库场景)
如果你的carorderprocess数据库是空的,完全不需要基线功能,可以直接删除spring.flyway.baselineOnMigrate = true这一行配置。Flyway会自动初始化空数据库,并执行你的V1__init.sql脚本。
内容的提问来源于stack exchange,提问作者farahm
相关产品推荐
相关产品推荐

