Я уже давно использую 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». На что именно он претендует? Есть ли еще одна ошибка? Есть ли способ сделать его более многословным?
Любая помощь или подсказка очень ценится!