【问题标题】:Why does my rollback not work in Liquibase?为什么我的回滚在 Liquibase 中不起作用?
【发布时间】:2021-07-29 14:59:35
【问题描述】:

我有一个 Spring Boot 应用程序,我正在尝试使用 Liquibase 测试一些迁移。我正在尝试查看回滚功能的工作原理,但我不断收到错误。

这是迁移文件:

<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog
    xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog
                  https://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.8.xsd">

    <changeSet id="1" author="Me">
        <createTable tableName="Person">
            <column name="id" type="int" />
            <column name="name" type="string" />
        </createTable>
        <rollback>
            <dropTable tableName="Person" />
        </rollback>
    </changeSet>

</databaseChangeLog>

当我运行应用程序时,表已正确创建......但我不知道如何或在哪里运行命令以执行回滚。我尝试在 IntelliJ 的 Maven 目标中运行以下命令:

mvn liquibase:rollback

当我运行它时说:

Failed to execute goal org.liquibase:liquibase-maven-plugin:3.10.3:rollback (default-cli) on project party: 
The database URL has not been specified either as a parameter or in a properties file.

如果数据库 URL 丢失或错误,那么我认为它也不应该能够创建表?

【问题讨论】:

    标签: postgresql liquibase rollback changeset liquibase-hibernate


    【解决方案1】:

    mvn liquibase:rollback

    此命令执行变更集的回滚段,并应恢复在更新阶段完成的任务。但是如果我们单独发出这个命令,构建就会失败。

    原因是我们没有指定回滚的限制。回滚到初始阶段,数据库将被彻底清除。因此,必须定义以下三个约束之一来限制满足条件时的回滚操作:

    1. rollbackTag - 我们可以将数据库的特定状态定义为标签。因此,我们可以参考该状态。实现这一点的命令是:

    mvn liquibase:rollback -Dliquibase.rollbackTag=1.0
    

    这将执行标记“1.0”之后执行的所有变更集的回滚语句。有关如何标记数据库的详细信息,请访问this link

    2. rollbackCount - 我们定义需要回滚的变更集数量。如果我们将其定义为 1,则最后一次执行的变更集将被回滚:

    mvn liquibase:rollback -Dliquibase.rollbackCount=1
    

    3. rollbackDate - 我们可以将回滚目标设置为日期,因此,在该日期之后执行的任何变更集都将回滚:

    mvn liquibase:rollback "-Dliquibase.rollbackDate=Jun 03, 2017"
    

    如需了解更多详情,请前往this article,那里的解释非常清楚。也可以看看this post

    【讨论】:

      【解决方案2】:

      尝试在回滚标记中传递架构名称或目录名称。

      【讨论】:

        猜你喜欢
        • 2021-07-06
        • 2020-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-04
        • 1970-01-01
        • 1970-01-01
        • 2014-07-11
        相关资源
        最近更新 更多