Liquibase — откат набора наборов изменений

Мы делаем выпуски баз данных, которые состоят из группы наборов изменений, и наши журналы изменений базы данных организованы следующим образом.

   MasterChangeLog.xml

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

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

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

Я хотел бы знать, как я буду откатывать набор наборов изменений. Я надеялся, что смогу использовать tagDatabase с номером релиза (Release001, Release002 или Release003) и просто откатиться по тегу

Я бы ожидал, что смогу сделать что-то подобное, если бы хотел откатить все изменения до Release001.

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

Не могли бы вы рассказать мне, как мне заставить это работать с Liquibase?

Спасибо


person Nicholas Hammond    schedule 03.11.2010    source источник


Ответы (1)


Указанная вами команда действительна, если Release002 является допустимым тегом. Однако вам, вероятно, не нужны кавычки вокруг тега Release0002.

При откате с использованием тега liquibase запустится в конце выполненных вами наборов изменений и откатит каждый в обратном порядке, пока не доберется до набора изменений, который был помечен ранее. Я не уверен из вашего описания, если это то, что вы хотите.

В вашем примере, если вы пометили базу данных после запуска Realease002.xml, запуск «rollback Release0002» приведет к откату всего в Release0003. Если вы хотите откатить все в Release0002, вам нужно будет запустить "rollback Release0001" или создать тег Release0002 перед выполнением наборов изменений Release0002. В любом случае, однако, у вас будет откат Release0003, поскольку он появился после Release0002.

Причина, по которой liquibase не поддерживает выбор наборов изменений для отката, заключается в том, что между наборами изменений часто существуют зависимости, потому что они часто основаны друг на друге, и поэтому откат произвольной группы наборов изменений в середине часто имеет неожиданные последствия.

person Nathan Voxland    schedule 05.11.2010