2010-11-03 3 views
7

Noi release del database che si compongono di un gruppo di set di cambiamento e dei nostri registri delle modifiche del database sono organizzati nel seguente modoLiquibase - Abortire un insieme di gruppi di modifiche

MasterChangeLog.xml 

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

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

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

vorrei sapere come mi farebbe rotolare indietro un set di serie di modifiche. Speravo di poter usare tagDatabase con il numero di versione (Release001, Release002 o Release003) e tornare indietro usando il tag

Mi aspetterei di poter fare qualcosa di simile se volessi ripristinare tutte le modifiche a Release001

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

Potresti dirmi come farei per far funzionare tutto questo con Liquibase?

Grazie

risposta

8

Il comando che avete elencato è valida se Release002 è un tag valido. Probabilmente non vuoi/hai bisogno di virgolette attorno al tag Release0002, comunque.

Quando si esegue il rollback utilizzando un tag, Liquibase verrà avviato alla fine dei changeset eseguiti e verrà eseguito il rollback in ordine inverso finché non verrà raggiunto il changeset precedentemente contrassegnato. Non sono sicuro della tua descrizione se è quello che vuoi.

Nell'esempio, se il database è stato codificato dopo l'esecuzione di Realease002.xml, l'esecuzione di "rollback Release0002" ripristinerebbe tutto in Release0003. Se si desidera eseguire il rollback di tutto in Release0002, è necessario eseguire "rollback Release0001" o apportare il tag Release0002 prima del in esecuzione ai changeset di Release0002. In entrambi i casi, tuttavia, si rilascerà Release0003 perché è arrivato dopo la Release0002.

Il motivo liquibase non supporta raccolta e la scelta di modifiche per ripristinare è perché c'è spesso dipendenze tra gruppi di modifiche, perché spesso costruite l'una sull'altra, e così il rollback di un gruppo arbitrario di changeset nel mezzo ha spesso conseguenze inaspettate.