You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Node示例通过Heroku Local连接Heroku Postgres失败,求解决方案

解决Heroku Local连接Heroku Postgres的SSL错误问题

这个问题我之前碰到过好几次,本质就是Heroku Postgres对远程连接强制要求SSL,而本地默认没开启SSL导致的。给你几个靠谱的解决办法:

方法一:在代码里强制启用SSL

如果你用的是Node.js的pg模块,直接在连接配置里加上SSL选项就行。比如:

const { Pool } = require('pg');

const pool = new Pool({
  connectionString: process.env.DATABASE_URL,
  ssl: {
    rejectUnauthorized: false
  }
});

这里设置rejectUnauthorized: false是因为Heroku Postgres的证书有时候在本地环境下会出现验证问题,跳过验证就能正常连接了。如果你的环境能正常验证证书,也可以直接写ssl: true,不过前者兼容性更好。

方法二:修改.env里的DATABASE_URL

不用改代码,直接在你的DATABASE_URL后面加上SSL参数就行。比如原来的URL是:

postgres://username:password@host:port/database_name

改成:

postgres://username:password@host:port/database_name?sslmode=require

这样Heroku Local启动时,程序会自动以SSL模式连接Postgres,绕过pg_hba.conf的限制。

额外检查

  • 先确认.env文件确实被Heroku Local加载了:运行heroku local:env,看看输出里的DATABASE_URL是不是你配置的那个,有没有带上SSL参数(如果用方法二的话)。
  • 要是还是不行,重启一下Heroku Local进程,有时候环境变量需要重新加载才生效。

补充一下:Heroku Postgres的服务器端pg_hba.conf配置默认拒绝非SSL的远程连接,所以不管你本地怎么调,必须开启SSL才能连上远程的Heroku数据库,这是核心原因。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:28:05