Liquibase / Spring Boot / Postgres - 模式名称不起作用
Posted
技术标签:
【中文标题】Liquibase / Spring Boot / Postgres - 模式名称不起作用【英文标题】:Liquibase / Spring Boot / Postgres - Schema name not working 【发布时间】:2019-04-20 18:32:49 【问题描述】:我正在使用 Spring Boot 2.0.2、Liquibase 3.5.5 和 PostgreSQL 10。我能够成功地在数据库和我的 JPA 实体之间创建差异。但是,当我将这些更改应用于数据库时,它会将更改应用于 PostgreSQL 中的默认“公共”模式。但是,我希望它将更改应用于不同的架构“dbo”。
我尝试了多种方法使其无法成功。我真的不想编辑每个变更集并手动添加架构名称。
这是我尝试过的:
<plugin>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-maven-plugin</artifactId>
<version>3.5.5</version>
<configuration>
<changeLogFile>src/main/resources/db/changelog/db.changelog-master.yaml</changeLogFile>
<diffChangeLogFile>src/main/resources/db/changelog/$maven.build.timestamp_changelog.xml</diffChangeLogFile>
<propertyFile>src/main/resources/liquibase.properties</propertyFile>
<defaultSchemaName>dbo</defaultSchemaName>
<driver>org.postgresql.Driver</driver>
<url>jdbc:postgresql://localhost:5432/FCV2Db?currentSchema=dbo</url>
<username>postgres</username>
<password>fastcode</password>
<referenceUrl>hibernate:spring:com.nfinity.fastcode.domain?dialect=org.hibernate.dialect.PostgreSQL9Dialect</referenceUrl>
<verbose>true</verbose>
<logging>debug</logging>
<dropFirst>false</dropFirst>
</configuration>
<dependencies>
<dependency>
<groupId>org.liquibase.ext</groupId>
<artifactId>liquibase-hibernate5</artifactId>
<version>3.6</version>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.23.1-GA</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
</dependencies>
</plugin>
是的,我尝试将架构名称作为配置属性和 JDBC Url 连接,因为单独使用其中任何一个都不起作用。同时使用两者也不起作用。
有人成功解决了这个问题吗?
【问题讨论】:
【参考方案1】:我升级到最新版本的 PostgreSQL 驱动程序 42.2.5 并将驱动程序的 Url 与 ?currentSchema=schemaName 一起使用,它可以工作。
示例:jdbc:postgresql://localhost:5432/FCV2Db?currentSchema=dbo
【讨论】:
以上是关于Liquibase / Spring Boot / Postgres - 模式名称不起作用的主要内容,如果未能解决你的问题,请参考以下文章
在Spring Boot 2下激活后启动liquibase。
使用 Spring-Boot 启动时的 Liquibase 迁移不起作用
Spring boot - 在启动时禁用 Liquibase
如果运行 spring boot 并让 liquibase 自动执行迁移,则 Liquibase databasechangelog 表存储相对路径