如何在Flyway中高效管理开发阶段的数据库变更?
开发阶段未上线Flyway迁移脚本调整方案
首先明确核心边界:只要迁移脚本还未合并到主分支、未在测试/生产等公共环境执行过,都属于可修改原脚本的范围,完全不需要新增冗余的迁移脚本。
针对你提到的改原脚本要重置数据库的成本问题,可按实际场景选以下方案:
- 无特殊测试数据的场景:如果本地没有需要保留的自定义测试数据,直接执行官方自带命令
flyway clean清理当前库结构,再执行flyway migrate重新运行修改后的所有迁移脚本即可。如果提前配置好开发环境的测试数据种子(seed)脚本,整个过程只需要十几秒,长期来看一劳永逸。 - 需要保留本地测试数据的场景:先手动在本地数据库执行你要调整的DDL语句(比如修改字段类型、新增缓存字段),再修改对应Flyway迁移脚本的内容,最后执行
flyway repair命令,Flyway会自动更新schema_version表中对应脚本的校验和,不会报脚本已修改的错误,不需要重置数据库就能正常继续开发。 - 多人协作分支场景:如果当前开发分支已经有其他同事拉取过,修改原脚本后在分支内同步一声即可,其他同事根据自己本地数据情况选择上述两种方案同步调整,不会产生协作冲突。
注意:一旦迁移脚本已经合并到主分支、在公共环境执行过,绝对不能再修改原脚本,必须新增迁移脚本完成变更,避免公共环境的迁移流程报错。
内容的提问来源于stack exchange,提问作者corsiKa
相关产品推荐
相关产品推荐

