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
我正在尝试将 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