当前位置: 首页 > 知识库问答 >
问题:

为什么我的回滚在LiquiBase中不起作用?

傅朗
2023-03-14

我有一个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 Goal中运行以下命令:

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丢失或错误,那么我认为它也不能创建表?

共有1个答案

慕宏峻
2023-03-14

mvn LiquiBase:回滚

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

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

mvn liquibase:rollback -Dliquibase.rollbackTag=1.0
mvn liquibase:rollback -Dliquibase.rollbackCount=1

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

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

要了解更多细节,请参阅本文,它对此进行了非常清楚的解释。也看看这个帖子。

 类似资料:
  • 我是LiquiBase的新手。我可以使用LiquiBase更新(具有创建表的变更集)到Oracle数据库。在进行更新时,我还创建了标记。但是当我尝试回滚更新的更改(即删除创建的表)时,使用该标记。桌子没有掉下来。 我使用的是liquibase-maven插件3.4.2。下面是Maven中的代码。 请帮我解决这些问题。

  • case-0-3.sql: 我在进行任何更改之前标记数据库: 之后,我在每个文件应用后应用文件和标记数据库: 求求你,救命。可能有人在sql或其他格式中使用回滚操作?哪里错了?我做错了什么?它是工作液基功能吗?

  • Stage.close()对我不起作用。 我查看了:JavaFX2.0:关闭一个舞台(窗口) 这是我的代码: 下面是调用消息框类的代码:

  • 这是my snippet error.html代码(使用thymeleaf): 和Spring Security配置代码片段: 如果我试图使用错误的URL访问我的应用程序,那么GlobalExcetionController中的对象异常和URL不会在error.html中呈现,为什么?

  • case-0-3.sql: I在进行任何更改之前标记数据库: 之后,我应用文件,并在每个文件应用后标记数据库:

  • 问题内容: 我有一个复合主键的表,其中指的是实体 HolidayPackage 有 许多 到 一个 关系 HolidayPackageVariant 和 HolidayPackage 。 当我尝试在HolidayPackageVariant中进行复杂的PK映射时,出现以下错误: 初始SessionFactory创建失败。org.hibernate.annotations.common.Assert