Skip to content

Flyway

数据库结构随应用启动自动升级。启动失败时先查迁移历史。

当前配置

  • spring.flyway.enabled=true
  • baseline-on-migrate=true
  • baseline-version=20260713140000
  • out-of-order=true
  • locations=classpath:db/migration

检查 SQL

sql
SELECT installed_rank, version, description, type, success
FROM flyway_schema_history
ORDER BY installed_rank;

正常情况下,已有库至少有一条基线记录 20260713140000;新库会执行基线 SQL,其后增量继续向前执行。success 必须全部为成功。

排错要点

  • 校验失败、提示找不到旧脚本:通常是历史表与当前扫描目录不一致。生产环境先备份,再评估是恢复备份还是由实施编写后续修复脚本。
  • 多人新增脚本冲突:调整尚未执行的脚本时间戳,保证版本号全库唯一。
  • 已执行脚本发现问题:新增后续修复脚本,不改历史脚本。
  • 合并版本后需要补跑较早脚本:当前允许 out-of-order=true
  • 校验和不匹配:说明已执行过的脚本文件被改动。应恢复该版本文件原内容后重启;生产库不要手改历史表中的校验值。

生产库清理 flyway_schema_history 务必在确认备份和评估影响范围后执行。