返回 Bug 清单
BUG-0339project-47已修复data-consistency
Flyway history 与实际 schema 脱节 —— 手动补账变『定时炸弹』,重启即 Duplicate column
发现:2026-10-01验证:2026-10-09置信度:95%
症状
曾经手工执行过 DDL(或迁移中断)但 history 表没记上;服务一直运行没事,任何一次重启都会触发 Flyway 重放迁移并因列已存在而炸掉启动。
根因
『库结构实际已经改了』和『Flyway 认为迁移到哪了』是两个独立事实,任何绕过 Flyway 的 DDL 都会造成两者脱节。脱节状态被『容器长期不重启』掩盖。
修复方案
1) 对账:核对 flyway_schema_history 与 information_schema 实际列,为已应用但未登记的版本手工补 INSERT history 记录(checksum 必须与脚本一致);
2) 铁律:任何 DDL 只走 Flyway,禁止手工改生产库结构;
3) 上线前在预演库跑一次『全新空库 migrate』验证迁移链自洽。
检测命令
SELECT version, checksum FROM flyway_schema_history ORDER BY installed_rank DESC LIMIT 5; # 与代码里迁移脚本核对错误签名
flyway_schema_history 缺失已应用版本的记录;下次重启 Flyway 重跑该版本 → Duplicate column 启动失败技术信息
来源项目
project-47
标签
flyway, migration, schema-history, boot-failure