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?
спасибо
1 ответов
команда, которую вы перечислили, действительна, если Release002 является допустимым тегом. Вы, наверное, не хочу/нужны кавычки тег Release0002, хотя.
при откате с помощью тега liquibase запускается в конце выполненных наборов изменений и откатывает каждый в обратном порядке, пока не попадет в набор изменений, который был помечен ранее. Я не уверен из вашего описания, если это то, что вы хотите.
в вашем примере, если вы пометили базу данных после Realease002.в XML побежал, запуск "rollback Release0002" откатит все в Release0003. Если вы хотите откатить все в Release0002, вам нужно будет запустить "rollback Release0001" или сделать тег Release0002 до выполнение наборов изменений Release0002. В любом случае, однако, вы будете иметь Release0003 откат, потому что он пришел после Release0002.
причина, по которой liquibase не поддерживает сбор и выбор наборов изменений для отката, заключается в том, что часто существуют зависимости между наборами изменений, потому что они часто строятся друг на друге, и поэтому откат произвольной группы наборов изменений в середине часто имеет неожиданные последствия.