如何解决postgresql错误“连接尝试失败”?

时间:2019-02-10 12:03:10

标签: postgresql spring-boot docker

我想构建我的springboot项目。然后我想对我的代码进行泊坞窗处理。但是当我建造时,我得到了错误。我认为这是由postgresql设置引起的。但是我找不到原因。

能请你帮我吗?

docker-compose.yml file;

version: '2'
services:
  web:
    build: .
    ports:
      - 8080:8080
  db:
    container_name: productdb
    image: postgres:9.5
    volumes:
    - sample_db:/var/lib/postgresql/data
    environment:
    - POSTGRES_PASSWORD=bright
    - POSTGRES_USER=postgres
    - POSTGRES_DB=productdb
    - PGDATA=/var/lib/postgresql/data/pgdata
    ports:
    - "5432:5432"

volumes:
  productdb: {}

application.yml文件;

server:
  port: 8761
eureka:
  client:
  registerWithEureka: false
  fetchRegistry: false
  server:
  enableSelfPreservation: false
  waitTimeInMsWhenSyncEmpty: 0

spring:
  application:
    name: product-service
  datasource:
    url: jdbc:postgresql://db:5432/productdb
    username: postgres
    password: xxxx
    initialization-mode: always
  jpa:
    show-sql: true
    hibernate:
      ddl-auto:
    properties:
      hibernate:
        temp:
          use_jdbc_metadata_defaults: false

错误看起来像;

org.postgresql.util.PSQLException:连接尝试失败。

谢谢

3 个答案:

答案 0 :(得分:1)

在DigitalOcean中使用DataGrip软件和DB。出现错误

[08001] The connection attempt failed. java.net.SocketTimeoutException: connect timed out.

确保我当前的IP是allowed inbound connections之一,并且可以正常工作。 (即使该错误可能已经有所不同。)

希望这最终对某人有用。

答案 1 :(得分:0)

如果您的docker-compose.yml文件配置正确,则应启动两个容器:

docker ps

docker ps 来源:https://intelligentbee.com/2017/09/18/setup-docker-symfony-project/

一个用于应用程序,一个用于数据库。

这些容器位于同一主机中,因此,如果您的网站需要连接到数据库,则它必须使用: localhost 作为数据库ip。

也可以使用:127.0.0.1或0.0.0.0您只需尝试一下!

如果您的网站和数据库位于不同的主机中,则可以使用托管数据库的公共IP。但是,当您使用 docker-compose 时,情况并非如此。

我建议您在Web应用程序中使用数据库之前先测试数据库是否已准备就绪并可用。

为了测试您的数据库,您可以采用以下方法之一:


使用telnet检查数据库状态

有几种方法,但是最简单的选择是 telnet 命令。例如,为了测试mysql容器是否已准备好在启动该机器的机器上使用:

telnet localhost 3306

如果您的mysql已准备就绪,则telnet必须向您显示如下图所示的结果:

telnet ok mysql

任何其他负面结果,都表明您的mysql容器已退出或错误。

注意:将3306更改为正确的后端端口


使用数据库IDE检查数据库状态

UI用户的其他选项正在使用某些数据库IDE测试数据库连接。只需下载几个postgress客户端IDE之一并测试您的数据库即可。

答案 2 :(得分:0)

您的数据库应接受容器外部的连接

sudo docker run --name pg -p 5432:5432 -v pg_data:/var/lib/postgres/data -e POSTGRES_DB=mydb -e POSTGRES_USER=pg_user -e POSTGRES_PASSWORD=pg_password -d postgres -c "listen_addresses=*"

“ listen_addresses = ”它将接受容器外部的连接*

您可以使用Follow凭证连接您的Spring Boot项目

db_user = pg_user

db_password = pg_password

db_url = jdbc:postgresql:// localhost:5432 / mydb