为什么flyway在将OutOrder设置为true时会生成警告消息?
问题描述:
我在我的日志中得到以下警告消息时outOfOrder
设置为true:为什么flyway在将OutOrder设置为true时会生成警告消息?
警告:outOfOrder模式是有效的。迁移运行可能无法重现。
这封邮件的确切含义是什么?如果有人能告诉我发生移民事件会发生什么,那将会很好。任何示例都会有所帮助。
答
假设3迁移:
- 创建两个名字 '汤姆' 和 '杰里'
- 增加 '米奇' 作为一个第三一个
- 打开名称为大写
与运行outOfOrder可能会导致您的迁移应用如下所示:
1,3,2 - >在DB:TOM,JERRY,Mickey
重新运行它以后会产生
1,2,3 - >在DB:TOM,杰里,米奇
这就是为什么outOfOrder是潜在的危险和第一迁移运行可能不是重复性。
答
要添加到Axel的答案,不仅可能产生的数据取决于顺序,但迁移可能甚至不可能。试想一下:
迁移:
- 创建表
foo
- 添加列
foo.bar
- 重命名列
foo.bar
到foo.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
您将“outOfOrder”设置为true的原因是什么? [Flyway 2.0:乱序迁移](http://java.dzone.com/announcements/flyway-20-out-order-migrations) – Kai 2013-03-06 08:34:29
原因是我想要flyway选择我添加的任何热修复在主要分支之间。但是我需要知道的是,为什么Flyway说迁移运行可能不可重现? – user1862868 2013-03-07 04:09:41
是否有人可以为我提供查询答案? – user1862868 2013-03-12 06:47:43