You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot测试环境Flyway迁移脚本执行顺序异常求助

解决Flyway迁移脚本执行顺序问题

第一步:修正脚本命名规范

Flyway要求迁移脚本必须遵循V<版本号>__<描述>.sql格式(版本号与描述之间是两个下划线),否则会导致版本号解析错误,打乱执行顺序。

将你的脚本重命名:

  • main/resources/db/migration下的脚本改为 V1_0__db_script.sql
  • test/resources/db/data-sql下的脚本改为 V0_9__sql_db_script.sql(降低版本号确保优先执行)
  • test/resources/db/data-test下的脚本改为 V1_0__test_db_script.sql

第二步:修正Spring Boot配置的大小写

YAML配置对大小写敏感,Spring Boot的Flyway配置前缀必须是小写的flyway,而非Flyway。修改application-test.yml:

flyway:
  enabled: true
  schemas: scheme_one, scheme_second  # 同时指定两个schema,避免脚本执行时找不到目标schema
  locations:
    - classpath:/db/data-sql
    - classpath:/db/migration
    - classpath:/db/data-test

第三步:确保执行顺序符合预期

Flyway的核心执行逻辑是按版本号升序执行所有扫描到的脚本,调整版本号后:

  1. 版本号为0.9的data-sql脚本会最先执行
  2. 接着执行版本号为1.0的main目录脚本
  3. 最后执行同版本号的data-test脚本(若需确保它在main脚本之后,也可将其版本号设为V1_1__test_db_script.sql)

额外优化建议

  • 针对跨schema的脚本,在脚本开头显式指定目标schema,比如USE scheme_second;,避免因默认schema(scheme_one)导致执行错误。
  • 若不想调整版本号,可给不同目录的脚本设置递进的版本号,比如data-sql用V1_0__xxx.sql、main下用V1_1__xxx.sql、data-test用V1_2__xxx.sql,严格按版本号顺序执行。

内容的提问来源于stack exchange,提问作者Ronak Joshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 04:55:33