【问题标题】:Trying to figure out Liquibase rollback with SQL试图用 SQL 找出 Liquibase 回滚
【发布时间】:2019-08-22 21:51:07
【问题描述】:

试图弄清楚回滚如何与格式化的 SQL 和 Liquibase 一起工作。

从 Liquibase 网站上的快速入门开始,我能够在我的数据库中创建一个表。然后开始处理回滚。就像手动测试一样,创建表后,我在 DATABASECHANGELOG 表中标记了更改。 Ran Liquibase rollback <mytag> 说成功完成,但是表没有被修改。

--liquibase formatted sql
--changeset user:1
create table addresses (
address VARCHAR(45),
city VARCHAR(45),
zip VARCHAR(10)
);
--rollback drop table addresses;

Liquibase 表示回滚成功完成,但表没有被删除。

【问题讨论】:

  • 您可以尝试运行updateSQL 而不是update。然后 liquibase 将把 SQL 放在终端上而不是直接放在数据库上。然后将生成的 SQL 语句手动应用于数据库,看看是否有效。这样您就可以排除 liquibase 范围之外的问题。

标签: sql liquibase


【解决方案1】:

Liquibase 中的标记概念似乎让很多人感到困惑。标记用于标记已知的良好状态,因此如果您在部署创建表的更改后标记它,然后说回滚到该标记,它会以它的思维方式“正确”地做事。

以下是这方面的一小部分文档(我在之后添加了重点):

标签

指定要回滚的标签将回滚所有更改集 对目标数据库执行给定标签之后 应用。请参阅“命令行”文档了解如何标记您的 数据库。

要在您的示例中测试表的回滚,您需要使用rollbackCount 命令或rollbackToDate 命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    相关资源
    最近更新 更多