2015-11-03 46 views
10

我們使用Flyway遷移數據庫模式,並且我們已經有超過100個遷移腳本。任何方式來「壓縮」飛行路線遷移?

一旦我們將多次遷移壓縮爲單個第一版遷移,在開發過程中就可以了,因爲我們刪除並重新創建了該模式。但在生產中這是行不通的,因爲Flyway無法驗證遷移。

我無法找到任何文件或最佳做法在這種情況下做什麼。問題在於文件數量不斷增加,我不希望每次都看到數千個遷移文件,基本上如果產品已經在最新版本中。我的意思是,版本號低於生產版本的遷移腳本與我們無關,如果我們能夠將這些文件壓縮到單個遷移中,那將是非常棒的。

我們正在使用MySQL。

我們該如何處理?

回答

10

難道重新基線會做什麼?

我還是新來飛行,但這是我認爲它會工作。請在接受我的要求之前先測試以下內容。

刪除schema_version表。 刪除您的遷移腳本。

運行遷飛基線 (此重新創建schema_version表,並增加了一個基線記錄爲第1版)

現在你是好去。請記住,由於您已經刪除了所有遷移腳本,因此您將無法「遷移」到任何以前的版本,但這對您來說可能不是問題。

一步一步溶液:

  1. drop table schema_version;
  2. 導出的數據庫結構經由MySQL工作臺的腳本,例如。命名此腳本V1__Baseline.sql
  3. 刪除所有遷移腳本,並添加V1__Baseline.sql到腳本文件夾,所以它是遷飛唯一可用的腳本
  4. 運行遷飛的「基線」命令
  5. 完成
+0

難道這不是意思是說,如果你是一個開發團隊,那麼所有其他開發人員也需要刪除表schema_version? –

+0

是的。每個由該套Flyway遷移腳本「管理」的數據庫都需要相同的處理。 –

+0

運行基線時,flyway會檢查現有模式是否與新的V1__Baseline.sql模式匹配?如果我不想讓flyway根據V1__Baseline.sql驗證現有模式,我可以使用schema_version表中生成的校驗和創建一行嗎? – lloiacono