Spring Boot 2 с PostgreSQL, Flyway и Hikari: водитель утверждает, что не принимает jdbcUrl - PullRequest
0 голосов
/ 21 февраля 2020

Я уже давно использую Spring Boot с PostgreSQL и Flyway, и до сих пор практически не сталкивался с какими-либо неразрешимыми проблемами. Я настраиваю новый проект, и, как обычно, я пытаюсь сохранить пользовательскую конфигурацию как минимум, ожидая, что Spring Boot будет знать, как настроить большинство вещей - и обычно это происходит. Но теперь я получаю сообщение об ошибке, когда bean-компонент flywayInitializer пытается быть создан. Это вызвано следующей исключительной ситуацией 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 работает PostgreSQL 12.2 (Catalina 10.15), поскольку локальный процесс установлен и запущен с помощью homebrew. Я использую Spring Boot 2.2.4. Выпустите следующее (из 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 утверждает, что не принимает jdbcUrl». На что именно он претендует? Есть ли еще одна ошибка? Есть ли способ сделать его более многословным?

Любая помощь или подсказка очень ценится!

1 Ответ

0 голосов
/ 21 февраля 2020

Как правильно заметил Томми Шмидт, у меня просто была опечатка в моем URL. Замена точки на двоеточие решила ее, очевидно:

jdbc:postgresql://localhost:5432/tmt

С указанным выше URL это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...