从Flyway迁移中删除可重复脚本的最佳方法是什么?

时间:2017-10-10 13:46:41

标签: flyway

我目前正在使用Flyway命令行工具来管理我们的脚本,这些脚本将通过我们的CI构建服务器触发的发布流程调用。

问题是我有274个可重复的迁移,包括包规范,包体,函数,过程,视图和物化视图。

当我运行迁移时,一切都按预期工作,执行迁移,然后进行任何已更改的可重复迁移,但是在下一个版本中我们要删除一个可重复迁移所维护的对象。例如,我们想要删除定义ProcedureOne的可重复脚本(即R__ProcedureOne.sql)。

要做到这一点,我将有一个新的迁移脚本(V3.1.5.1.01__DropProcedureOne.sql),但我也会删除可重复的迁移脚本,以便不再创建和维护该对象。

但是,执行flyway信息会显示状态为MISSING的R__ProcedureOne.sql脚本。

虽然我同意它缺失但是删除它是故意的行动,因为它不再需要反对被错放。

我知道迁移选项ignoreMissingMigrations但我认为使用它会带来风险,并且可能会掩盖真正丢失的文件。

关于如何最好地删除可重复脚本的一般指导是什么?

1 个答案:

答案 0 :(得分:0)

我建议您只保留文件但将其设为空(即零字节)。或者在文件中添加注释,说明它所代表的对象已被删除。

至于实际删除它,您建议的另一个选项可能是更新可重复迁移以删除自身,然后再次更新为零长度。这具有能够被重放到空数据库中的优点;由于在版本化之后应用了可重复的迁移,因此不会删除示例中的过程。缺点是运行两次迁移。