Spring Boot 3中Flyway迁移脚本未找到问题求助
问题原因与解决方案
Spring Boot 3.0 默认集成 Flyway 9.x,而 Flyway 9.x 对迁移脚本的命名规则做了严格收紧,这是导致你遇到问题的核心原因:
关键变更点
Flyway 9.x 要求迁移脚本的版本号段必须仅使用下划线 _ 分隔,不能使用小数点 .。你原来的脚本名 V1.0.0_01__Init_from_ddl.sql 里的 . 会被判定为非法格式,直接被 Flyway 忽略;哪怕你尝试改成 V1_0_0__Init.sql 这类符合规则的名称,也要检查是否存在拼写错误(比如漏写下划线、多写符号等)。
解决步骤
- 严格修正脚本命名:把版本号里的小数点全部替换成下划线,比如将原脚本改为
V1_0_0_01__Init_from_ddl.sql,或者简化为V1__Init.sql,确保格式完全符合V<版本号段用下划线分隔>__<描述>.sql的要求。 - 确认资源目录有效性:检查
src/main/resources/db/migration目录在打包后是否被正确放入 classpath,Spring Boot 3 对资源目录的默认处理逻辑没变,但如果是多模块项目,要保证当前模块的资源目录配置正确。 - 排查依赖冲突:确保项目里没有手动引入低版本的 Flyway 依赖,Spring Boot 3.0 的
spring-boot-starter-flyway会自动引入兼容的 Flyway 9.x 版本,手动引入旧版会导致规则不兼容。
额外排查手段
如果改完名字还是不行,开启 Flyway 的 DEBUG 日志查看扫描细节:
logging: level: org.flywaydb: DEBUG
日志里会显示 Flyway 实际扫描的路径、跳过的文件及原因,能快速定位问题。另外确认数据库连接的 schema 配置正确,Flyway 会基于指定 schema 检查迁移历史,schema 不对也可能导致识别异常。
内容的提问来源于stack exchange,提问作者t777
相关产品推荐
相关产品推荐

