我有独立的应用程序。它在 java、spring-boot、postgres 上,并且有 liquibase。
我需要部署我的应用程序,而 liquibase 应该创建所有表等。但它应该在不公开的自定义模式中进行。liquibase 的所有服务表(databasechangelog 和 databasechangeloglock)也应该在自定义模式中。如何在 liquibase 开始工作之前在 DB 中创建我的模式?我必须在我的应用程序中在部署时、在配置中或类似内容中执行此操作。无需对数据库进行任何手动干预。
应用程序属性:
spring.datasource.jndi-name=java:/PostgresDS
spring.jpa.properties.hibernate.default_schema=my_schema
spring.jpa.show-sql = false
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
spring.datasource.continue-on-error=true
spring.datasource.sql-script-encoding=UTF-8
liquibase.change-log = classpath:liquibase/changelog-master.yaml
liquibase.default-schema = my_schema
更新:
当 liquibase 启动时,它会创建两张表 databasechangelogs 和一张表。之后,liquibase 开始工作。但是我想要 liquibase liquibase.default-schema = my_schema,但是当 liquibase 开始工作时它不存在并且它是一个错误:异常是 liquibase.exception.LockException: liquibase.exception.DatabaseException: ERROR: schema "my_schema" does not exist
我希望 liquibase 在自定义架构中工作,而不是在公共场合:
liquibase.default-schema = my_schema
但是在 liquibase 可以做到之前,必须创建模式。Liquibase 无法执行此操作,因为它尚未启动,并且启动时需要架构。恶性循环。
德玛西亚99
相关分类