2013-03-06 29 views
2

我在我的日志中得到以下警告消息时outOfOrder设置为true:为什么flyway在将OutOrder设置为true时会生成警告消息?

警告:outOfOrder模式是有效的。迁移运行可能无法重现。

这封邮件的确切含义是什么?如果有人能告诉我发生移民事件会发生什么,那将会很好。任何示例都会有所帮助。

+0

您将“outOfOrder”设置为true的原因是什么? [Flyway 2.0:乱序迁移](http://java.dzone.com/announcements/flyway-20-out-order-migrations) – Kai 2013-03-06 08:34:29

+0

原因是我想要flyway选择我添加的任何热修复在主要分支之间。但是我需要知道的是,为什么Flyway说迁移运行可能不可重现? – user1862868 2013-03-07 04:09:41

+0

是否有人可以为我提供查询答案? – user1862868 2013-03-12 06:47:43

回答

6

假设3迁移:

  1. 创建两个名字 '汤姆' 和 '杰里'
  2. 增加 '米奇' 作为一个第三一个
  3. 打开名称为大写

与运行outOfOrder可能会导致您的迁移应用如下所示:

1,3,2 - >在DB:TOM,JERRY,Mickey

重新运行它以后会产生

1,2,3 - >在DB:TOM,杰里,米奇

这就是为什么outOfOrder是潜在的危险和第一迁移运行可能不是重复性。

4

要添加到Axel的答案,不仅可能产生的数据取决于顺序,但迁移可能甚至不可能。试想一下:

迁移:

  1. 创建表foo
  2. 添加列foo.bar
  3. 重命名列foo.barfoo.baz

执行顺序:

  • 1,2,3→foo具有柱baz
  • 1,3,...→错误施加3:未发现
  • 2柱foo.bar ...→错误施加2:表foo找不到
  • 3,...→错误应用3:表foo找不到
+0

那么,如何处理修补程序将是一个最佳实践?看起来在人们在分支机构之间积极修补的环境中,您别无选择,只能启用乱序迁移,因为较新的分支机构迁移将具有较晚的ID。无论选择何种迁移命名方案,我都无法调和如何维护较早的服务发布分支。迁移依赖似乎是有序的,但这需要在内部实施回调(可以肯定的是很简单)。这仍然假定准确的依赖记录。 – Kyle 2015-10-01 16:16:11

相关问题