2010-11-03 3 views
7

Wir Datenbank Veröffentlichungen, die aus einer Gruppe von Änderungssätzen und unserer Datenbank Änderungsprotokolle sind organisiert in der folgenden Art und Weise hergestellt werdenLiquibase - Roll einen Satz von Differenzmengen zurück

MasterChangeLog.xml 

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

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

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

Ich mag wissen würde, wie ich würde eine Reihe von Änderungssätzen zurückrollen. Ich hatte gehofft, dass ich TagDatabase mit der Release-Nummer (Release001, Release002 oder Release003) verwenden könnte und Rollback nur mit dem Tag

Ich würde in der Lage sein, etwas in der Art zu tun, wenn ich alle Änderungen auf Release001 zurücksetzen wollte

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

Könnten Sie mir bitte sagen, wie ich mit Liquibase arbeiten würde?

Dank

Antwort

8

Der Befehl Sie gültig aufgelistet ist, wenn Release002 ein gültiger Tag ist. Sie wollen/brauchen wahrscheinlich keine Anführungszeichen um das Release0002-Tag herum.

Beim Zurückrollen mit einem Tag beginnt liquibase am Ende der von Ihnen ausgeführten Changesets und führt einen Rollback in umgekehrter Reihenfolge durch, bis das Changeset erreicht wird, das zuvor markiert wurde. Ich bin mir nicht sicher aus Ihrer Beschreibung, ob Sie das wollen.

Wenn Sie in Ihrem Beispiel die Datenbank getaggt haben, nachdem Realease002.xml ausgeführt wurde, würde das Ausführen von "Rollback Release0002" alles in Release0003 zurücksetzen. Wenn Sie alles in Release0002 zurücksetzen möchten, müssen Sie "rollback Release0001" ausführen oder das Release0002-Tag vor ausführen, das die Release0002-Änderungssätze ausführt. Wie auch immer, Sie werden Release0003 zurückrollen lassen, weil es nach Release0002 kam. Der Grund, warum liquibase das Auswählen und Auswählen von changeSets nicht unterstützt, liegt darin, dass Abhängigkeiten häufig zwischen Changesets bestehen, da sie oft aufeinander aufbauen, und daher das Rückgängigmachen einer willkürlichen Gruppe von Changesets in der Mitte oft unerwartete Konsequenzen hat.