START-FLYWAY-MIGRATION-FAILED
错误编号:START-FLYWAY-MIGRATION-FAILED
如果日志同时有 Illegal mix of collations,先走 START-DB-COLLATION-MIXED,不要两套答案。
适用版本 / 权益
免费。Admin spring.flyway 配置来自 forge-admin-server 的 application.yml。
典型报错关键词
Flyway migration failedValidate failed: Migrations have failed validationchecksum 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-locations | false |
spring.flyway.baseline-on-migrate | true |
spring.flyway.baseline-version | 1.0.0 |
spring.flyway.table | forge_schema_history |
spring.flyway.placeholder-replacement | false |
正确配置
新环境先 init-db.sh,再启动服务让 Flyway 跑尚未应用的增量。不要手改已经执行过的 V*.sql。
解决步骤
- 看启动日志里最早的数据库异常,不要只看最后一行。
- 若提示没有
forge_schema_history,说明 Flyway 还没建表,回到连接 / 建库 / collation 页。 - 表已存在时:
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;- 没有业务数据的首次初始化:备份后按 START-DB-COLLATION-MIXED 重建库更安全。
- 已有数据:先备份。检查失败脚本是否留下部分 DDL/DML,修好库状态和 Flyway 记录。不要无条件
DELETE FROM forge_schema_history。 - checksum 失败不要改历史脚本再手工重算,除非你清楚影响范围并已备份。
验证方法
启动 Admin 后 spring.flyway 不再报错。forge_schema_history 最新一行 success = 1。
仍未解决时提供的安全信息
- 本错误编号
- 失败的
version/script文件名 success = 0的那一行(不要贴完整迁移 SQL)
