FlyWay执行State/BaselineMigration基线脚本后后续迁移报错如何解决
Flyway State/BaselineMigration 问题解决方案
根因说明
该报错是Flyway 7.x及8.0.0之前版本的已知缺陷:基线迁移(S开头脚本)执行后,schema_version表生成的SQL_STATE_SCRIPT类型记录会被校验逻辑错误识别为常规版本迁移,触发本地缺失的校验报错,旧版本的ignore missing类配置不会对STATE类型脚本生效。
解决方案
方案1:版本升级(最推荐)
直接升级Flyway到8.0.0及以上版本,该缺陷已在8.0.0版本正式修复,升级后无需额外配置即可符合需求:
- 新环境部署时执行S10开头的基线脚本完成初始化,自动将schema版本标记为10
- 后续新增的V11、V12等更高版本迁移脚本可正常执行
flyway migrate命令,不会触发校验报错
方案2:低版本兼容方案(无法升级时使用)
如果受业务依赖限制暂时无法升级Flyway版本,可通过以下操作临时解决:
- 在Flyway配置中新增规则:
flyway.ignoreMigrationPatterns="*:STATE_SCRIPT",直接忽略所有STATE类型脚本的校验逻辑 - 若上述配置不生效,可在首次执行S基线脚本成功后,手动执行一次
flyway repair命令,即可修正schema_version表的校验状态,后续执行migrate不会再触发缺失报错
使用规范说明
你描述的「新环境跳过历史低版本脚本,直接用高版本基线初始化,后续正常迭代更高版本迁移」的场景完全符合BaselineMigration功能的设计规范,仅旧版本缺陷导致无法正常落地。
内容的提问来源于stack exchange,提问作者hmc
相关产品推荐
相关产品推荐

