2017-04-04 35 views
0

我有多個腳本需要針對數據庫運行。就我而言,將每個版本的一個腳本進行遷移是絕對不可行的任務。我使用flyway錯了嗎?

但是,多次提到的解決方法是製作次要版本腳本,但這樣做也不符合我的期望。 如果我有4個小腳本需要運行,我希望在同一個事務中有全部4個腳本。所以如果4/4失敗,前3應該回滾。

我對此更加困惑,並且如果我正在從版本2升級系統 - > 4和3遍,而4失敗。我處於困境,希望v3回滾足夠好。

我是否錯過了命令行界面,我可以告訴flyway在單個事務中遷移所有內容。或者「測試」遷移並將所有內容都回滾,讓我知道遷移是否可以在沒有實際承諾的情況下運行。

編輯

==== ====語境

我在與多個全棧開發的環境中工作。我們在哪裏不斷添加和改變功能。因此,我們都有自己的數據庫。每個變更都會被編寫腳本,以便在腳本影響我們的分支或集成分支時,可以將更改應用到數據庫。

因爲在多臺機器之間進行操作時,每個版本都有多個腳本。

這是不可行的,說明每個開發人員必須不斷更新一個給定的文件。因爲將開發機器與分段和生產數據庫採用不同的版本方案也是不明智的。更不用說這會在合併分支時造成的。

還合併時,如果有一個問題已經發揮與腳本的順序。整個集合應該回滾,直到可以發生乾淨的遷移。

我們有我們自己的遷移工具,我唯一面臨的問題是,它在docker中還沒有工作,我希望不必改變它。

回答

0

我的意思是命令行不可能運行每個腳本都在一個事務中運行,但是當您創建一個腳本時,您可能會在一個事務中運行。

例如:

  • 下載遷徙路線。

    wget https://repo1.maven.org/maven2/org/flywaydb/flyway-commandline/4.1.2/flyway-commandline-4.1.2-linux-x64.tar.gz 
    
  • Extract flyway(您必須安裝java)。

    tar zxvf flyway-commandline-4.1.2-linux-x64.tar.gz 
    
  • 進入遷飛

    cd flyway-4.1.2 
    
  • 配置在/ conf目錄/遷徙路線。CONF

    flyway.url=jdbc:h2:file:./foobardb 
    flyway.user=SA 
    flyway.password= 
    
  • 名爲Vx__xxxxxx.sql

    select 1; 
    
  • 創建與每一個遷移的遷移在一個腳本中/ SQL Vlast_xxx.sql 誰在一個事務中運行/ sql目錄創建空遷移。

    create table ...; create table ..; create procedure ...; 
    
  • 運行遷移

    flyway-4.1.2> flyway migrate 
    

在之前命令使用RUN泊塢窗,我想你一定知道它。

這只是一個模板,但經過一些修復後,它可能會很好。