执行heroku pg:psql命令时连接PostgreSQL实例卡住无响应
我之前也碰到过一模一样的情况!当执行heroku pg:psql后卡在--> Connecting to postgresql-cylindrical-38664这一步毫无响应,大概率是网络、CLI配置或者连接逻辑的问题,试试下面这些排查方法:
检查网络与代理干扰
首先排除网络层面的问题:防火墙、VPN或者代理工具经常会拦截Heroku的PostgreSQL SSL连接。可以先暂时关闭VPN/代理,再重新运行heroku pg:psql试试。
你也可以用nc命令测试数据库端口是否可达(把地址换成你的实际DB主机地址):nc -zv postgresql-cylindrical-38664.herokuapp.com 5432如果显示连接成功,说明网络没问题;如果失败,那就是网络拦截的问题。
重置Heroku CLI认证缓存
CLI的本地认证缓存偶尔会出问题,导致连接流程卡住。试试注销再重新登录:heroku logout heroku login登录完成后再执行
heroku pg:psql,很多时候就能恢复正常。直接用原生psql命令连接
绕过Heroku CLI的包装逻辑,直接用psql原生命令连接可能解决问题。首先获取数据库的连接字符串:heroku pg:credentials:url postgresql-cylindrical-38664复制输出里的完整连接字符串(格式类似
postgres://<用户名>:<密码>@<主机>:<端口>/<数据库名>),然后直接运行:psql "postgres://<用户名>:<密码>@<主机>:<端口>/<数据库名>"这种方式跳过了Heroku CLI的连接脚本,能快速验证是否是CLI本身的问题。
更新Heroku CLI到最新版本
旧版本的CLI可能存在已知的连接bug。先检查当前版本:heroku --version如果不是最新版,根据你的系统更新(比如Mac用
brew upgrade heroku,Windows重新下载安装包,Linux用对应包管理器更新),更新后再重试命令。检查Heroku平台状态
有时候是Heroku自身的服务故障导致连接失败。在终端运行:heroku status如果显示PostgreSQL服务有异常,那只能等待Heroku官方修复了。
内容的提问来源于stack exchange,提问作者Joe Escobedo

