База данных PostgreSQL не подключается к приложению весенней загрузки

В настоящее время я настраиваю базу данных postgreSQL для своего проекта весенней загрузки. Однако, когда я пытаюсь запустить сервер Tomcat, я получаю исключение, сообщающее, что из-за этого не удалось создать компоненты репозитория:

Caused by: jakarta.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.GenericJDBCException: Unable to open JDBC Connection for DDL execution [FATAL: password authentication failed for user "dev-user"] [n/a]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:421) ~[spring-orm-6.1.11.jar:6.1.11]
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-6.1.11.jar:6.1.11]
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366) ~[spring-orm-6.1.11.jar:6.1.11]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1853) ~[spring-beans-6.1.11.jar:6.1.11]
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1802) ~[spring-beans-6.1.11.jar:6.1.11]
    ... 101 common frames omitted

В моем файле свойств.yml у меня есть это:

spring:
 datasource:
   url: jdbc:postgresql://localhost:5432/authentication_db
   username: dev-user
   password: password
   driver-class-name: org.postgresql.Driver
 jpa:
   hibernate:
     ddl-auto: update
   show-sql: false
   properties:
     hibernate:
       format_sql: true
   database: postgresql
   database-platform: org.hibernate.dialect.PostgreSQLDialect

В моем docker-compose.yml у меня есть это:

services:
 postgres:
   container_name: postgres-sql-pa
   image: postgres
   environment:
     POSTGRES_USER: dev-user
     POSTGRES_PASSWORD: password
     PGDATA: /var/lib/postgresql/data
     POSTGRES_DB: authentication_db
   volumes:
     - postgres:/data/postgres
   ports:
     - 5432:5432
   networks:
     - spring-demo
   restart: unless-stopped

Почему у меня такое исключение? Я вижу, что докер-контейнер работает нормально, и информация в базе данных сообщает мне, что свойства db_name, username, пароль установлены правильно.

Довольно очевидный FATAL: для пользователя «dev-user» не удалось выполнить аутентификацию по паролю]. Используйте правильный пароль.

Adrian Klaver 21.07.2024 17:00

Я уже использую его, я даже установил пароль в базе данных как «пароль», чтобы дважды проверить, но все еще не могу подключиться.

learningProgrammer 21.07.2024 17:09

может быть, у вас уже установлен Postgres и работает как программа рядом с контейнером? проверьте, используя другой порт для докер-контейнера (например, 5433) и попробуйте подключиться к нему

J Asgarov 21.07.2024 17:26

Я заменил 5432:5432 на 5433:5433, но докер все еще показывает, что база данных работает в 5432. Есть ли еще место, где мне нужно это изменить?

learningProgrammer 21.07.2024 17:32

ни один докер по-прежнему не должен работать в 5432, вам нужно просто сопоставить его с 5433 на своем хосте (сделано с помощью - 5433:5432 в вашем docker-compose.yml). Также не забудьте обновить URL-адрес в свойствах на url: jdbc:postgresql://localhost:5433/authentication_db.

J Asgarov 21.07.2024 17:37

Есть ли у вас какая-либо документация или пример того, как это сделать?

learningProgrammer 21.07.2024 17:39

обновил свой комментарий

J Asgarov 21.07.2024 17:39

К вашему вопросу добавьте следующую информацию: 1) Версия Postgres. 2) Соответствующая информация из журнала Postgres о попытке подключения. 3) Соответствующая часть pg_hba.conf. 4) Вы переносили данные из другой базы данных в эту?

Adrian Klaver 21.07.2024 19:09

Здравствуйте, исправление было предоставлено @JAsgarov, я сделал то, что он упомянул, и теперь работает.

learningProgrammer 24.07.2024 20:45
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
9
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Исправление, которое сработало для меня, было основано на комментарии @JAsgarov. Базовое изменение с 5432:5432 на 5433:5432 и обновление URL-адреса.

просто для уточнения, а не исправления, просто обходного пути к тому факту, что на вашем компьютере порт 5432 уже занят каким-то другим приложением (скорее всего, postgres либо установлен как программа, либо работает в другом контейнере). Рад, что это помогло

J Asgarov 24.07.2024 20:48

Да, большое спасибо за всю помощь, которую вы оказываете и в других постах!

learningProgrammer 24.07.2024 20:49

Другие вопросы по теме