我遇到了 Spring Boot 和 mvn liquibase 的问题。 当我使用
提交更改时,我可以通过标签更新和回滚 liquibasemvn liquibase:update
并回滚它们
mvn liquibase:rollback -Dliquibase.rollbackTag=0.0.0
不幸的是,当我使用 liquibase:update 提交更改时,我无法启动我的 Spring Boot 应用程序。
org.springframework.beans.factory.BeanCreationException:创建在类路径资源[org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration$LiquibaseConfiguration.class]中定义的名为“liquibase”的bean时出错:调用init方法失败;嵌套异常是 liquibase.exception.MigrationFailedException:更改集类路径迁移失败:db/changelog/changelog-0.0.1.xml::0.0.1::
这告诉我 Spring Boot 尝试再次运行变更集。
当我查看数据库更改日志表时,发现有具有不同部署 ID 的重复条目,这可能是问题所在吗?
Ps:当我让 Spring boot 进行更新时,我可以运行该应用程序,但无法通过 CLI 回滚:(
这是我在 pom.xml 中的配置
<plugins>
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>3.6.3</version>
<configuration>
<driver>org.postgresql.Driver</driver>
<url>connection/url>
<username>user</username>
<password>password</password>
<promptOnNonLocalDatabase>false</promptOnNonLocalDatabase>
<rollbackTag>0.0.0</rollbackTag>
<changeLogFile>destination of rollback file</changeLogFile>
</configuration>
</plugin>
</plugins>
</build>
在application.properties中
spring.liquibase.change-log=classpath:db/changelog-master.xml spring.liquibase.test-rollback-on-update=true
我猜变更日志文件的标记是正确的,因为它在 CLI 中也不起作用。
谢谢。
最佳答案
我猜maven中的类路径与springboot应用程序中的类路径不同。 Liquibase 计算类路径并将其存储在 db 中的某个属性中(我不知道它的名称)。因此,当您使用 Maven 准备数据库,然后运行应用程序时,文件的路径是不同的,因此对于 liquibase 来说,这意味着新的更改日志文件之类的内容。
您可以通过向所有变更日志文件添加 ticalFilePath
属性来解决此问题。
关于maven - Spring Boot 无法识别 mvn liquibase cli 更改,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54981339/