首页 文章

Liquibase回滚 spring 靴

提问于
浏览
2

我有一个使用 spring 靴构建的微服务 . 我集成了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 回答

  • 1

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

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

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

相关问题