2010-11-03 36 views
7

我們這是由一組變更集,我們的數據庫更改日誌的數據庫版本通過以下方式進行組織Liquibase - 回滾一組變更集

MasterChangeLog.xml 

      ---> Release0001.XML 
        ---> AddCustomerTable.XML 
        ---> AddOrderTable.XML 

      ---> Release0002.XML 
        ---> AddNewColumnsToCustomerTable.XML 
        ---> AlterOrderTableXML 

      ---> Release0003.XML 
        ---> AddPreferedCustomerTable.XML 

我想知道我是怎麼會回滾一組變更集。我希望我可以使用標籤數據庫版本號(Release001,Release002或Release003),並使用標籤回滾

我希望能夠做到這樣的事情,如果我想要將所有更改回滾到Release001

java -jar "liquibase.jar" --changeLogFile="MasterChangeLog.xml" Rollback "Release0002" 

請問我該如何解決這個問題,以便與Liquibase合作?

謝謝

回答

8

如果Release002是有效標記,則列出的命令是有效的。不過,您可能不希望/需要引用Release0002標籤。

當使用標籤回滾時,liquibase將從執行的變更集的末尾開始,並以相反的順序回滾每個變量,直到它到達之前標記的變更集。我不確定你的描述是否符合你的要求。

在您的示例中,如果您在運行Realease002.xml之後標記數據庫,則運行「rollback Release0002」將回滾Release0003中的所有內容。如果您想要在Release0002中回滾所有內容,您需要運行「回滾Release0001」或在執行Release0002變更集之前製作Release0002標記。不過,無論哪種方式,您都將使Release0003回滾,因爲它是在Release0002之後發佈的。

原因liquibase不支持挑挑揀揀變更回滾是因爲經常變更之間的依賴關係,因爲他們往往建立在對方,所以回滾變更的任意一​​組,中間往往有意想不到的後果。

相關問題