2016-08-11 28 views
0

我們試圖從flyway 2.0.3遷移到4.0.3。這會失敗,因爲flyway試圖從schema_version表中刪除主鍵,但它在2.0.3中沒有。閱讀之前有關flyway升級問題的帖子,似乎我們有兩個選擇。嘗試遷移幾個步驟,首先到2.3(升級到3可以跳過?),然後到4.0.3或手動更新schema_version表。由於各種原因,我們想要做後者。如何在schema_version升級前執行preFlywayUpgrade腳本

這樣做與飛路最好的方式是什麼?我們的客戶沒有可用的db客戶端工具,可以讓他們直接在數據庫上執行SQL。在升級到schema_version表之前,是否有辦法執行sql腳本?

preFlywayUpgrade.sql

?我試過preRepair.sql,但是這隻能在flyway成功更新schema_version表之後執行。

編輯:2016-08-18: 我最終從版本2.3.1,3.2和4.0.3下載了flyway src,將所需的sql語句組合到2.0.3到4.0.3,並添加了結果sql到flyway-core-4.0.3,替換現有的4.0.3遷移腳本。 我可以理解,您不希望永遠保留舊的遷移代碼,但與我一起工作的項目保留其數據庫遷移腳本多年,有些客戶不經常升級。鑑於flyway是一種用於從任何給定版本逐步升級的工具,如果它支持自身的升級更舒適一點,那將是很好的。 (不要誤解我的意思,我非常感謝你所做的所有工作,我認爲這是一個很棒的工具!) 一個想法可能是讓flyway將自己的版本記錄到schema_version表中。這樣可以更容易地確定需要對schema_version表本身進行哪些更改。

回答

0

如果您希望Flyway爲您完成工作,您必須按照內置升級路徑遷移到最新版本每個主版本,然後再轉到下一個版本。否則,你是自己的。

或者,您也可以刪除schema_version表,並使用新版本的Flyway再次對數據庫進行基線。