Spring Boot应用启动时Liquibase未自动执行问题排查
Liquibase 不随Spring Boot启动的修复方案
按以下顺序排查修复即可:
- 修复changelog文件存放路径错误
你配置的changelog读取路径为classpath:db/changelog/db.changelog-root.yaml,但当前文件存放在src/db/changelog/目录下。Gradle编译时仅会将src/main/resources目录下的文件加入classpath,根目录src下的文件不会被识别为资源,启动时Liquibase自动配置类找不到changelog文件时,默认不会抛出错误,会直接跳过初始化流程,因此日志中无任何相关记录。
修复操作:将src/db/changelog/目录整体移动到src/main/resources/下,保证文件最终路径为src/main/resources/db/changelog/db.changelog-root.yaml。 - 移除Liquibase的手动版本声明
你在依赖中手动指定了liquibase-core:4.12.0,Spring Boot 3.0.x版本有官方绑定的适配Liquibase版本,手动引入不匹配的版本会导致Liquibase自动配置的条件校验失败,不会触发初始化逻辑。
修复操作:删除liquibase-core依赖的version字段,交由Spring Boot依赖管理插件自动拉取适配版本,修改后的依赖项为:implementation 'org.liquibase:liquibase-core' - 修复changelog文件的YAML语法错误
当前changelog中first_name、last_name两个字段的配置缩进错误,nullable属性既没有放在constraints块下,缩进层级也和上级type属性不匹配,会导致后续Liquibase解析changelog失败。修正后的对应字段片段如下:- column: name: first_name type: varchar(50) constraints: nullable: false - column: name: last_name type: varchar(50) constraints: nullable: false - 校验配置(可选)
若修复后仍不确定Liquibase是否加载,可在application.properties中添加如下配置开启debug日志,启动时会打印Liquibase自动配置的匹配状态和执行记录:logging.level.org.springframework.boot.autoconfigure.liquibase=debug
内容的提问来源于stack exchange,提问作者Santa Monica
相关产品推荐
相关产品推荐

