You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows环境下Heroku远程连接PostgreSQL失败求助

排查Heroku无法连接本地PostgreSQL的问题

我来帮你一步步拆解问题根源,核心原因主要集中在网络访问的层级限制上:

1. 使用localhost连接被拒绝的原因

这是典型的概念误解:Heroku的服务器运行在公网环境中,它的localhost指向的是Heroku自身的服务器容器,不是你的本地机器。所以用localhost作为主机名,Heroku根本找不到你的数据库,自然会返回连接拒绝。你需要替换成你的公网IP或可被公网访问的域名。

2. 使用本地IPv4地址连接超时的核心问题

你提到的“本地IPv4地址”大概率是局域网内网IP(比如192.168.x.x10.x.x.x这类),公网中的Heroku服务器无法直接访问内网IP,这是导致超时的主要原因。具体排查点如下:

- 未使用公网IP

先确认你的公网IP:

  • 在本地命令行执行 curl ifconfig.me(Windows需先安装curl,或直接百度搜索“我的公网IP”)
  • 用这个公网IP替换内网IP,再尝试连接

- 路由器未配置端口转发

即使有公网IP,家用路由器默认会拦截外部请求访问内网服务。你需要:

  1. 登录路由器后台(通常在浏览器输入192.168.1.1192.168.0.1,具体看路由器说明书)
  2. 找到「端口转发」/「虚拟服务器」功能
  3. 添加规则:外部端口5432,内部IP填写你的本地机器内网IP,内部端口5432,协议选择TCP
  4. 保存规则后,重启路由器生效

⚠️ 注意:确保本地机器的内网IP是静态的(可在网卡设置中手动指定IP,避免重启后IP变动导致转发失效)

- Windows防火墙规则可能存在限制

虽然你已经开启了5432端口入站,但需要确认规则的范围:

  • 打开「Windows Defender防火墙」→「高级设置」→「入站规则」
  • 找到PostgreSQL相关的规则,双击查看「作用域」选项卡
  • 确认「远程IP地址」设置为「任何IP地址」,而不是仅局域网IP

- 网络环境存在CGNAT(运营商内网)

部分宽带运营商会使用CGNAT( Carrier-Grade NAT),给用户分配共享的公网IP,这种情况下外部无法直接访问你的本地机器。你可以:

  • 联系运营商申请独立公网IP
  • 临时测试可使用内网穿透工具(比如ngrok tcp 5432,生成公网转发地址后配置给Heroku)

验证步骤

完成上述配置后,先验证公网是否能访问你的数据库:

  1. 用手机流量(不要连接家里WiFi),执行 telnet 你的公网IP 5432(手机需安装telnet工具,或用在线端口检测网站)
  2. 如果能成功连接,再配置Heroku的数据库连接串尝试连接

内容的提问来源于stack exchange,提问作者Andrew Allen

火山引擎 最新活动