带有PostgreSQL,Flyway和Hikari的Spring Boot 2:驱动程序声称不接受jdbcUrl

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有PostgreSQL,Flyway和Hikari的Spring Boot 2:驱动程序声称不接受jdbcUrl相关的知识,希望对你有一定的参考价值。

我已经将Spring Boot与PostgreSQL和Flyway一起使用了很长一段时间,直到现在几乎没有遇到任何无法解决的问题。我正在建立一个新项目,并且像往常一样,我试图将自定义配置保持在最低限度,希望Spring Boot知道如何配置大多数东西-通常是这样。但是现在尝试创建“ flywayInitializer” bean时出现错误。它是由以下RuntimeException引起的:

Caused by: java.lang.RuntimeException: Driver org.postgresql.Driver claims to not accept jdbcUrl, jdbc.postgresql://localhost:5432/tmt
at com.zaxxer.hikari.util.DriverDataSource.<init>(DriverDataSource.java:110) ~[HikariCP-3.4.2.jar:na]
at com.zaxxer.hikari.pool.PoolBase.initializeDataSource(PoolBase.java:321) ~[HikariCP-3.4.2.jar:na]

我在Macbook(Catalina 10.15)上运行了PostgreSQL 12.2,这是通过自制程序安装并启动的本地进程。我使用Spring Boot 2.2.4.Release如下(来自pom.xml):

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.2.4.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

<!-- groupId, etc. omitted -->

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>11</java.version>
    <hibernate.types.version>2.4.2</hibernate.types.version>
    <html.unit.version>2.36.0</html.unit.version>
    <jaxb.runtime.version>2.3.2</jaxb.runtime.version>
    <nv.i18n.version>1.26</nv.i18n.version>
    <spring.version>5.1.5.RELEASE</spring.version>
</properties>

<dependencies>
    <!--    ##############################
        ######              Dev             ######
        ############################## -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- Spring AOP -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-aop</artifactId>
    </dependency>
    <!-- Spring Cache -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>
    <!-- Spring Data -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <!-- Spring Redis -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
<!-- other dependencies omitted -->
</dependencies>

Redis尚未添加为数据源,但已添加为依赖项以供将来使用。现在,我正在我的application.yml中配置数据源,如下所示:

spring:
    datasource:
        url: jdbc.postgresql://localhost:5432/tmt
        username: tmt
        password: *********
        driver-class-name: org.postgresql.Driver
    flyway:
        baselineOnMigrate: true
        locations: classpath:db/migration
    jpa:
        hibernate:
            ddl-auto: update
        generate-ddl: true
        properties:
            hibernate:
                dialect: org.hibernate.dialect.PostgreSQL9Dialect
                jdbc:
                    lob:
                    non_contextual_creation: true

我已经对错误消息进行了搜索,发现很多人在配置Hikari连接池时遇到了问题,该池现在是Spring Boot的默认设置,但是这些问题主要与多个数据源有关,这不是我所拥有的(然而)。我仍然尝试过,但是解决他们的问题没有帮助我。我发现的一个较旧的问题是,Hikari无法理解url属性,需要一个名为jdbcUrl的属性,但这也无济于事。

我真的不知道该怎么做,但是我认为它要么与Hikari连接池有关,要么可能与我的postgreSQL实例有关。我确实发现错误消息有点奇怪:“ org.postgresql.Driver claims不接受jdbcUrl”。它到底在声称什么?是否隐藏了另一个错误?有什么方法可以使其更详细吗?

非常感谢任何帮助或提示!

答案

正如汤米·施密特(Tommy Schmidt)正确指出的那样,我只是在网址中输入错字。用冒号代替圆点可以解决它,显然:

jdbc:postgresql://localhost:5432/tmt

使用上述网址,即可使用。

以上是关于带有PostgreSQL,Flyway和Hikari的Spring Boot 2:驱动程序声称不接受jdbcUrl的主要内容,如果未能解决你的问题,请参考以下文章

PostgreSQL ‘数据库不存在’ - Java Spring Boot、Flyway、Docker/PostgreSQL

无法在 Spring Boot 中将 Flyway 迁移与 postgresQL 连接起来

Flyway - 自动增量 ID 不适用于 PostgreSQL 中的测试数据

使用 Flyway 和 Docker 容器内的嵌入式 Postgresql 运行测试时出现 java.net.ConnectException

无法为 PostgreSQL 表应用 Flyway 迁移

如何在flyway创建的postgresql jdbc连接上设置时区?