2013-03-06 135 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

相關問題