【发布时间】:2021-08-03 15:57:03
【问题描述】:
我是一名实习生,我正在尝试学习 Liquibase,看看我们是否可以将它用于我们的应用程序。 我在 Git Bash 中使用了 Liquibase,没有任何问题(在更新和回滚方面都很好),然后我尝试将 Liquibase 与 Spring Boot 项目一起使用,看看我是否能够更新数据库。我做到了,我都通过 Spring Boot 创建和更新了数据库。但接下来我想做一些回滚,但我做不到,我不知道该怎么做。我尝试从 Git Bash 中的文件夹中执行此操作,该文件夹是我的 Spring Boot 项目的更改日志,如您在图像中看到的,但 Liquibase 说更改尚未应用,如果我尝试更新,则会出现错误,因为表存在(在事实上 Spring Boot 应用程序更早地创建了它们)
以下是一些代码,希望它们对您理解问题有用:
终于发现问题了!! 使用 liquibase changelog-sync 命令,我注意到在 DATABASECHANGELOG 表中,对于 Spring 的变更集和其他 Git Bash 的 FILENAME 列,我有不同的值,如您所见 here.
为了避免这个问题,我在更新日志中使用了logicalFilePath 属性,例如this。现在一切正常,我可以从 Git Bash 进行回滚。
【问题讨论】:
标签: spring-boot liquibase rollback