2012-08-08 90 views

回答

3

我不能多說dbdeploy,但關於flyway的聲明是正確的。遷徙路線是非常嚴格的有關處理SQL腳本:

  • 每個腳本部署只有一次,必須有比所有以前部署腳本更高的版本號(所以沒有辦法回顧歷史)
  • 部署腳本不能將被修改

這種嚴格並不是一件壞事,但像有幾個代碼分支引入數據庫修改的情況不支持開箱即用。

我們在這種情況下使用飛橋,但我們必須做出一些解決方法。首先,我們將所有SQL腳本分爲兩組:已在生產的腳本和不是的腳本。所有不在生產中的腳本(無論它們在哪個分支上)都可以隨時修改。爲了支持這一點,我們編寫腳本的方式可以根據需要隨時執行。其次,我們介入在名爲SCHEMA_VERSION的表格中完成的飛行記錄。在那裏,我們刪除每條飛路遷移前尚未投入生產的所有條目。當在開發系統上啓動遷移時,flyway會每次執行所有新腳本。然而,在生產系統中,新腳本只能在其生效時執行一次。

+0

+1這仍然是正確的。一旦http://code.google.com/p/flyway/issues/detail?id=138實施後,它將在1.8版本中成爲可能。 – 2012-08-08 21:50:32