Skip to content

START-FLYWAY-MIGRATION-FAILED

错误编号:START-FLYWAY-MIGRATION-FAILED

如果日志同时有 Illegal mix of collations,先走 START-DB-COLLATION-MIXED,不要两套答案。

适用版本 / 权益

免费。Admin spring.flyway 配置来自 forge-admin-serverapplication.yml

典型报错关键词

  • Flyway migration failed
  • Validate failed: Migrations have failed validation
  • checksum mismatch

用户会看到什么

应用在启动阶段停在 Flyway,历史表已存在或正在创建。

发生原因

增量脚本执行失败、脚本被改过导致 checksum 对不上,或库里残留了半截 DDL。不要在没看清失败脚本之前删 forge_schema_history

配置位置

application.yml 里当前值:

源码值
spring.flyway.enabled${FORGE_FLYWAY_ENABLED:true}
spring.flyway.locations${FORGE_FLYWAY_LOCATIONS:filesystem:./db/migration,filesystem:../db/migration,filesystem:forge-server/db/migration}
spring.flyway.fail-on-missing-locationsfalse
spring.flyway.baseline-on-migratetrue
spring.flyway.baseline-version1.0.0
spring.flyway.tableforge_schema_history
spring.flyway.placeholder-replacementfalse

正确配置

新环境先 init-db.sh,再启动服务让 Flyway 跑尚未应用的增量。不要手改已经执行过的 V*.sql

解决步骤

  1. 看启动日志里最早的数据库异常,不要只看最后一行。
  2. 若提示没有 forge_schema_history,说明 Flyway 还没建表,回到连接 / 建库 / collation 页。
  3. 表已存在时:
sql
USE forge_admin;

SELECT installed_rank, version, description, script, installed_on, success
FROM forge_schema_history
WHERE success = 0
   OR installed_rank >= (SELECT MAX(installed_rank) - 5 FROM forge_schema_history)
ORDER BY installed_rank DESC;
  1. 没有业务数据的首次初始化:备份后按 START-DB-COLLATION-MIXED 重建库更安全。
  2. 已有数据:先备份。检查失败脚本是否留下部分 DDL/DML,修好库状态和 Flyway 记录。不要无条件 DELETE FROM forge_schema_history
  3. checksum 失败不要改历史脚本再手工重算,除非你清楚影响范围并已备份。

验证方法

启动 Admin 后 spring.flyway 不再报错。forge_schema_history 最新一行 success = 1

仍未解决时提供的安全信息

  • 本错误编号
  • 失败的 version / script 文件名
  • success = 0 的那一行(不要贴完整迁移 SQL)

相关文档