我一直在阅读一篇关于Flyway的博文,名为Lessons Learned Using Flyway DB with Distributed Version Control。作者的一个建议是创建幂等迁移。
引用文章:
在完美的世界中,每次迁移只会针对每次迁移运行一次 数据库中。
在一个完美的世界里,就是这样。
实际上,有些情况下您需要重新运行 针对同一数据库的迁移。通常这将是由于a 沿着这条线的某个地方迁移失败,导致你不得不这样做 在获取数据库之前,请回溯成功迁移的步骤 回到工作状态。当发生这种情况时,它会非常有用 以幂等方式编写迁移。
假设我使用支持DDL事务的数据库,在创建这些迁移sqls时我是否应该担心幂等性?
答案 0 :(得分:5)
通常不会,尤其是当您拥有支持DDL事务的数据库时。
版本化迁移只能运行一次而且可以,但不必是幂等的(几乎没有任何好处)。
另一方面,可重复迁移必须是幂等的,因为它们会一遍又一遍地运行。
Flyway让您可以轻松地从头开始重新创建数据库,这是您在试验时应该采用的方法。