Liquibase / Spring Boot / Postgres-模式名称不起作用

时间:2018-11-18 01:04:59

标签: postgresql spring-boot liquibase

我正在使用Spring Boot 2.0.2,Liquibase 3.5.5和PostgreSQL10。我能够成功在数据库和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 个答案:

答案 0 :(得分:0)

我已升级到最新版本的PostgreSQL驱动程序42.2.5,并使用带有?currentSchema = schemaName的驱动程序的网址,并且可以正常工作。

示例:jdbc:postgresql:// localhost:5432 / FCV2Db?currentSchema = dbo