如果运行 spring boot 并让 liquibase 自动执行迁移,则 Liquibase databasechangelog 表存储相对路径

Posted

技术标签:

【中文标题】如果运行 spring boot 并让 liquibase 自动执行迁移,则 Liquibase databasechangelog 表存储相对路径【英文标题】:Liquibase databasechangelog table stores relative path if run spring boot and let liquibase do the migration automatically 【发布时间】:2021-08-03 20:12:49 【问题描述】:

我知道 liquibase 将创建一个数据库更改日志来检查是否已应用一个更改集。但是如果我让应用程序自动运行它,FILENAME 列将存储更改日志文件的相对路径。但是如果我运行 mvn liquibase:status,它说我的更改集没有被应用,原因是在 liquibase.properties 文件中我将更改日志的路径定义为绝对路径(即 changeLogFile=src/main/resources/db/ changelog/db-changeLog-master.xml),而对于 Spring Boot 应用程序自动迁移,路径在应用程序中定义为相对路径(spring.liquibase.change-log=classpath:db/changelog/db-changeLog-master.xml)。属性文件和“db/changelog/db-changeLog-master.xml”存储在数据库中。如果您手动执行(通过运行 mvn liquibase:update),则会存储“src/main/resources/db/changelog/db-changeLog-master.xml”。

我该如何解决这个问题?因为我想控制迁移(即手动进行迁移)或检查开发环境中的迁移状态。

【问题讨论】:

【参考方案1】:

更改属性后:changeLogFile=/db/changelog/db-changeLog-master.xml,在 liquibase.properties 中,mvn 命令按预期工作:现在 liquibase 认为我的更改日志的路径为“db/changelog/ db-changeLog-master.xml"

【讨论】:

以上是关于如果运行 spring boot 并让 liquibase 自动执行迁移,则 Liquibase databasechangelog 表存储相对路径的主要内容,如果未能解决你的问题,请参考以下文章

无法将 spring-boot 2 服务连接到不同容器中的 mysql

Spring Boot 测试容器

spring-boot 使用 main函数 无法启动的问题完美 解决方案。

Spring Boot 在启动时将示例数据插入数据库

Spring boot注解分析

如何创建 Spring Boot 测试套件