Spring 引导执行器 Liquibase 端点失败

Spring Boot Actuator Liquibase endpoint fail

我正在尝试将 Liquibase 与 Spring Boot 一起使用。 这是我的 application.properties 文件:

# ----------------------------------------
# DATA PROPERTIES
# ----------------------------------------

spring.datasource.url=jdbc:postgresql://xxxxxx:5432/dev
spring.datasource.schema=my_schema
spring.datasource.username=my_username
spring.datasource.password=my_password

# LIQUIBASE (LiquibaseProperties)
liquibase.default-schema=${spring.datasource.schema}
liquibase.user=${spring.datasource.username}
liquibase.password=${spring.datasource.password}

更改集应用良好(table 创建正常)。

当我访问 /liquibase 执行器端点时出现问题,我收到 500 错误:

Unable to get Liquibase changelog

我还得到以下日志:

org.postgresql.util.PSQLException: ERROR: relation "public.databasechangelog" does not exist

如果问题出在用于访问变更日志的架构前缀 table:"public" 与 "my_schema"。

我认为 spring.datasource.schema 是设置正确的参数?

这里只是一个猜测 - 我认为问题是您的 'real' 架构是由 spring.datasource.schema 设置的,但 liquibase 表存储在 public 中,它可能是 Spring 引导执行器不知道它们可以分开。

这是一个可行的解决方案 (come from this answer):

# ----------------------------------------
# DATA PROPERTIES
# ----------------------------------------

spring.datasource.url=jdbc:postgresql://xxxxxx:5432/dev?currentSchema=my_schema