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

无法连接数据库:执行heroku run rails db:migrate遇PG连接错误求助

分析与解决PostgreSQL连接错误的问题

Let's break down what's going on here and fix this step by step:

首先,你的database.yml配置有明显问题

Heroku托管的PostgreSQL实例不需要你手动指定database、username、password这些字段——Heroku会自动为你的应用设置一个DATABASE_URL环境变量,里面包含了所有连接远程Postgres所需的信息(主机、端口、用户名、密码、数据库名)。你当前的配置硬编码了本地风格的连接参数,这和Heroku的远程Postgres环境完全不匹配。

为什么会出现这个错误?

错误提示里提到找不到Unix域套接字/var/run/postgresql/.s.PGSQL.5432,核心原因是:Heroku的dyno(运行你应用的容器)里没有本地运行的PostgreSQL服务。你的应用按照当前配置尝试连接本地的Postgres,但实际上应该连接Heroku提供的远程Postgres实例,而不是本地socket。

修复步骤:

  1. 修改database.yml的production配置
    把production部分改成依赖DATABASE_URL的极简配置,替换你现在的内容:

    production:
      url: <%= ENV['DATABASE_URL'] %>
      pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
      encoding: unicode
      timeout: 5000
    

    这样Rails会自动使用Heroku提供的完整连接字符串,不需要手动指定各个参数。

  2. 确认Heroku已经添加了PostgreSQL插件
    如果你还没给应用添加Postgres服务,执行这个命令:

    heroku addons:create heroku-postgresql:hobby-dev
    

    (hobby-dev是免费的入门套餐,根据你的需求可以更换其他套餐)

  3. 验证环境变量存在
    执行以下命令确认Heroku已经设置了DATABASE_URL:

    heroku config:get DATABASE_URL
    

    如果返回一个类似postgres://username:password@host:port/database的字符串,说明配置正确。

  4. 重新部署并执行迁移
    提交你的配置修改,推送到Heroku,然后再运行迁移:

    git add config/database.yml
    git commit -m "Update production database config to use Heroku DATABASE_URL"
    git push heroku main
    heroku run rails db:migrate
    

这样应该就能解决连接错误,成功执行数据库迁移了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:36:37