症状
连接尝试快速失败并报 ECONNREFUSED,这与超时不同:对端明确拒绝,说明数据包到达了某台主机但该端口无人监听。常见于笔记本可用而在容器内失败,因为容器中的 localhost 指向容器自身而非运行数据库的主机。
诊断
用 ss -ltnp 查看端口是否有监听;从同一网络上下文(容器内)再测一次;用 dns.lookup 确认主机名解析的地址。
ss -ltnp | grep :5432
根因
TCP 连接被主动拒绝,因为解析到的地址与端口没有接受者,说明服务未在该处监听,或客户端网络无法到达。
修复
启动或重启服务;绑定到客户端使用的网卡接口;修正主机名使其解析到正确地址;调整容器网络使服务之间可达。
验证
重试连接确认成功,再执行一次真实请求,证明服务确实可用而非仅仅接受套接字。
常见陷阱
盲目增加重试而不修网络或启动顺序,只会延后失败;应先确认监听与路由。