Liquibase回滚弹簧靴

时间:2018-04-03 15:41:01

标签: spring-boot liquibase

我有一个使用弹簧靴构建的微服务。我集成了Liquibase并执行除 rollback 之外的所有 changeSet 。 下面是liquibase xml文件样本。

<changeSet id="6" author="Kasun">
        <insert tableName="user">
            <column name="firstNale" value="Kasun" ></column>
            <column name="lastName" value="Ranasinghe" ></column>
        </insert>
    </changeSet>
    <changeSet id="7" author="Kasun">
        <rollback changeSetAuthor="Kasun"  >
            <createTable tableName="user" />
        </rollback>
    </changeSet>

当我运行spring boot app时,它不会执行回滚。但是在数据库中,更改会在执行时更新。

1 个答案:

答案 0 :(得分:1)

在您的示例changeSet id="7"中没有实际更改。它只是一个回滚语句,逻辑上不正确,因为没有表作为变更集的一部分被删除。您可以参考Rolling Back ChangeSets docs了解如何编写回滚。

当您将架构迁移到较低版本时,应该执行回滚,例如降级Spring Boot应用程序版本后。这不是Spring Boot开箱即用的东西,它只使用常规的Liquibase更新操作来应用缺少的变更集。

Spring Boot中有一个liquibase.rollback-file属性,可用于编写回滚SQL脚本。在回滚模式时,您必须手动运行此SQL。您可以尝试Maven Liquibase Plugin自动执行此操作。