Postgres连接本地数据库出错-"连线被拒,请检查主机名称和埠号,并确定 postmaster 可以接受 TCP/IP 连线"

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Postgres连接本地数据库出错-"连线被拒,请检查主机名称和埠号,并确定 postmaster 可以接受 TCP/IP 连线"相关的知识,希望对你有一定的参考价值。

别的电脑远程连接我的数据库,没有问题,为什么我自己却不能连接自己呢?
网上查了下,说是要改pg_hba.conf配置文件,这里我已经改了,但还没用,而且改这个地方是为了支持远程连接的,我这是本地连接。
以下是报错的详细信息:
org.postgresql.util.PSQLException: 连线被拒,请检查主机名称和埠号,并确定 postmaster 可以接受 TCP/IP 连线。
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:136)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)
at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:125)
at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:22)
at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:30)
at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24)
at org.postgresql.Driver.makeConnection(Driver.java:393)
at org.postgresql.Driver.connect(Driver.java:267)
at java.sql.DriverManager.getConnection(DriverManager.java:582)
at java.sql.DriverManager.getConnection(DriverManager.java:185)
at com.ccx.core.db.PostGresJdbcConPoolDatasource.init(PostGresJdbcConPoolDatasource.java:111)
at com.ccx.core.db.PostGresJdbcConPoolDatasource.getConnection(PostGresJdbcConPoolDatasource.java:57)
at com.ccx.core.main.Test.main(Test.java:16)
Caused by: java.net.ConnectException: Connection timed out: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at java.net.Socket.connect(Socket.java:469)
at java.net.Socket.<init>(Socket.java:366)
at java.net.Socket.<init>(Socket.java:180)
at org.postgresql.core.PGStream.<init>(PGStream.java:62)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:76)
... 13 more

我也遇到了这样的情况,我的是因为自己查看地图时卡机了,就手动通过任务管理器把postgre.exe进程给结束了,之后项目再重新启动时报了这个错误,我的解决方法是在开始菜单中找到postgresql,重启服务start server,再运行项目就没问题了,希望对你有帮助。 参考技术A 我也遇到了这个问题,解决了记得共享哦

在nodejs中连接到heroku postgres db时出错

【中文标题】在nodejs中连接到heroku postgres db时出错【英文标题】:Error connecting to heroku postgres db in nodejs 【发布时间】:2018-10-16 15:25:18 【问题描述】:

我的数据库升级到 10.2 后似乎无法连接。

我正在使用 pg 7.4.2 npm 包。

需要说明的是,我已经使用附加了 ?ssl=true 的相同连接字符串进行了 6 个月的无问题连接。

我通过池或客户端连接时收到此错误。

AssertionError [ERR_ASSERTION]: false == true
    at Object.exports.connect (_tls_wrap.js:1099:3)
    at Socket.<anonymous> (/home/e/express/testpg/node_modules/pg/lib/connection.js:94:23)
    at Object.onceWrapper (events.js:219:13)
    at Socket.emit (events.js:127:13)
    at Socket.emit (domain.js:421:20)
    at addChunk (_stream_readable.js:269:12)
    at readableAddChunk (_stream_readable.js:256:11)
    at Socket.Readable.push (_stream_readable.js:213:10)
    at TCP.onread (net.js:598:20)

我现在正在对完整的 postgres 连接字符串进行硬编码,因此 env 变量没有问题。

我尝试在连接字符串的末尾添加/删除 ?ssl=true 并从构造函数中添加/删除 ssl:true。我也尝试过有无承诺。无论在本地还是部署到 heroku,都会出现相同的错误。

进口:

import  Pool, Client  from 'pg'

方法一:

let pool = new Pool(
  connectionString: csnew,
  ssl: true
)

pool.connect().then( client => 
  console.log('connected')
)
.catch(e=> 
  console.log(e)
)

方法二:

let pgclient = new Client(
  connectionString: csnew,
  ssl: true
)
pgclient.connect().then( () => 
  console.log('connected')
).catch(e=> 
  console.log(e)
)

【问题讨论】:

【参考方案1】:

那是因为 v7.4.2 中断了它的 SSL 支持。 Here's the open issue.

在问题解决之前,您需要严格使用 v7.4.1。

更新

版本 7.4.3 修复了该问题。

【讨论】:

感谢@vitaly-t,降级到 7.4.1 对我们有用 @647er 也许您必须在 package.json 中的目标版本之前删除 ^ @647er 您要么将其包含为“^7.0.0”,要么没有正确重新安装。该问题在 v7.4.2 之前不存在

以上是关于Postgres连接本地数据库出错-"连线被拒,请检查主机名称和埠号,并确定 postmaster 可以接受 TCP/IP 连线"的主要内容,如果未能解决你的问题,请参考以下文章

docker postgres pgadmin 本地连​​接

允许 docker 容器连接到本地/主机 postgres 数据库

PHP连接MySQL服务器老是出错

SQL2005 连接出错

如何从本地系统连接到 Linode 中的 postgres

navicat 连接mysql时1045出错怎么办