我有一个使用弹簧靴构建的微服务。我集成了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时,它不会执行回滚。但是在数据库中,更改会在执行时更新。
答案 0 :(得分:1)
在您的示例changeSet id="7"
中没有实际更改。它只是一个回滚语句,逻辑上不正确,因为没有表作为变更集的一部分被删除。您可以参考Rolling Back ChangeSets docs了解如何编写回滚。
当您将架构迁移到较低版本时,应该执行回滚,例如降级Spring Boot应用程序版本后。这不是Spring Boot开箱即用的东西,它只使用常规的Liquibase更新操作来应用缺少的变更集。
Spring Boot中有一个liquibase.rollback-file
属性,可用于编写回滚SQL脚本。在回滚模式时,您必须手动运行此SQL。您可以尝试Maven Liquibase Plugin自动执行此操作。