gpt4 book ai didi

Liquibase - 回滚一组变更集

转载 作者:行者123 更新时间:2023-12-04 07:29:12 26 4
gpt4 key购买 nike

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

   MasterChangeLog.xml

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

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

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

我想知道我将如何回滚一组更改集。我希望我可以使用带有版本号(Release001、Release002 或 Release003)的 tagDatabase 并使用标签回滚

如果我想将所有更改回滚到 Release001,我希望能够做这样的事情
java -jar "liquibase.jar" --changeLogFile="MasterChangeLog.xml" Rollback "Release0002"

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

谢谢

最佳答案

如果 Release002 是有效标记,则您列出的命令有效。不过,您可能不需要/不需要在 Release0002 标签周围引用。

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

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

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

关于Liquibase - 回滚一组变更集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4085600/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com