在https://flywaydb.org/documentation/migration/repeatable引用flyway doc:
可重复迁移没有版本。相反,他们是 (重新)每次校验和更改时都应用。
这对于管理其定义可以的数据库对象非常有用 然后只需在版本控制中的单个文件中维护。
在单次迁移运行中,始终可重复迁移 在所有待处理的版本化迁移完成后,最后应用 执行。可重复迁移按其顺序应用 描述
这听起来令人兴奋,但我似乎无法找到有关其实际工作方式以及如何初始化可重复迁移的任何说明。我理解,对于Versioned迁移,我可以创建一个基本迁移(https://flywaydb.org/documentation/existing),然后运行baseline命令为我未来的版本做好准备。但是对于可重复的迁移,我不明白flyway是如何进行校验和更改的。
相反,他们是
(重新)每次校验和更改时都会应用。
flyway是否假设我从头开始重新创建数据库以使校验和比较有效?这将解释它如何能够比较校验和(因为它可以访问已在数据库中的对象的文件定义)。
答案 0 :(得分:3)
假设您的可重复迁移SQL脚本的校验和是例如123。
这意味着您可以根据需要随每个新版本不断更改可重复的迁移脚本。您无法以这种方式更新基线(不可重复)脚本,因为Flyway会抛出有关不匹配校验和的错误。
答案 1 :(得分:1)
我测试了flyway并且现在了解了初始化:只要文件名没有特定的预提示(我认为'REPEATABLE'是默认值),flyway将忽略现有的脚本/迁移 - 只要迁移没有重命名要执行的飞路会忽略它们。