Не удается подключить приложение к серверу postgres с помощью файлов yaml

#postgresql #spring-boot #tomcat #kubernetes

#postgresql #весенняя загрузка #tomcat #kubernetes

Вопрос:

Следующая ошибка при подключении службы приложений springboot к Postgres с использованием yml.

ПРИМЕЧАНИЕ: url: jdbc: postgresql://localhost/postgres

 Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'userServiceImpl': Unsatisfied dependency expressed through field 'userRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userRepository': Cannot create inner bean '(inner bean)#3f0846c6' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#3f0846c6': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: default] Unable to build Hibernate SessionFactory; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to open JDBC Connection for DDL execution
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:639)
        at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:116)
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:397)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1429)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517)
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1287)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1207)
        at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:636)
        ... 62 common frames omitted

        Caused by: java.net.UnknownHostException: db
            at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:220)
            at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
            at java.base/java.net.Socket.connect(Socket.java:591)
            at org.postgresql.core.PGStream.<init>(PGStream.java:75)
            at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:91)
            at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:192)
            ... 138 common frames omitted


Please suggest the alternatives and ideas
  

Ответ №1:

Ну, вы не показали свой файл yaml, это самое главное. Ошибка говорит о проблеме с подключением, поэтому убедитесь, что ваш postgres запущен, вы можете протестировать его в консоли, например

 psql -h localhost -p port(default 5432) -U username -d database
  
 spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/databaseName?createDatabaseIfNotExist=trueamp;autoReconnect=trueamp;useSSL=false
    username: yourUsername
    password: yourPassword
  jpa:
    hibernate:
      ddl-auto: update
    show-sql: true
  

Это пример приложения.yaml для подключения к postgresql, запущенному на вашем компьютере, я использую docker для баз данных, поэтому он работает и для этого. Затем убедитесь, что в вашем файле сборки есть postgresql. Если вы используете maven, это выглядит так

 <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <scope>runtime</scope>
</dependency>
  

И не забывайте JPA, который у вас, вероятно, есть, как я вижу из ошибки, но в любом случае

 <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
  

Версия определяется как родительская. Spring boot выполняет настройку и подключение за вас, просто добавляя зависимости и читая ваше приложение.файл yml.

Комментарии:

1. отлично — вы дали правильные ссылки @Dominik21