Liquibase - 回滚一组变更集

Nic*_*ond 8 liquibase

我们执行数据库发布,这些发布由一组更改集组成,我们的数据库更改日志按以下方式组织

   MasterChangeLog.xml

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

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

           ---> Release0003.XML
                    ---> AddPreferedCustomerTable.XML
Run Code Online (Sandbox Code Playgroud)

我想知道如何回滚一组变更集.我希望我可以将tagDatabase与版本号(Release001,Release002或Release003)一起使用,然后使用标签回滚

如果我想将所有更改回滚到Release001,我希望能够做到这样的事情

java -jar "liquibase.jar" --changeLogFile="MasterChangeLog.xml" Rollback "Release0002"
Run Code Online (Sandbox Code Playgroud)

你能告诉我如何让它与Liquibase一起工作吗?

谢谢

Nat*_*and 9

如果Release002是有效标记,则列出的命令有效.但是,您可能不希望/需要引用Release0002标记.

当使用标签回滚时,liquibase将在执行的变更集的末尾开始,并以相反的顺序回滚每个变量集,直到它到达之前标记的变更集.我不确定你的描述是否是你想要的.

在您的示例中,如果在Realease002.xml运行后标记数据库,则运行"rollback Release0002"将回滚Release0003中的所有内容.如果要回滚Release0002中的所有内容,则需要执行Release0002更改集之前运行"回滚Release0001"或生成Release0002标记.但是,无论哪种方式,您都会将Release0003回滚,因为它是在Release0002之后发布的.

liquibase不支持选择和选择changeSets回滚的原因是因为变更集之间经常存在依赖关系,因为它们通常相互构建,因此在中间回滚任意一组变更集通常会产生意想不到的后果.