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

Heroku部署Ruby脚本报错求助:本地运行正常,需配置pg gem

解决Heroku部署Ruby应用时的PostgreSQL依赖问题

嘿,我之前也碰到过一模一样的情况!Heroku默认使用PostgreSQL作为数据库服务,而你本地大概率用的是SQLite或者其他数据库,所以本地执行bundle install、数据库创建和迁移都正常,但部署到Heroku就会因为缺失PostgreSQL的驱动包报错。下面是具体的解决步骤:

1. 更新Gemfile,添加pg gem

打开你的Gemfile,推荐把pg放在生产环境组里(这样本地开发如果用其他数据库不会受影响):

group :production do
  gem 'pg', '>= 1.2.0' # 这里的版本号要匹配你ActiveRecord的最低要求,比如Rails 6.1+至少要1.2.0
end

如果你本地也想改用PostgreSQL做测试,直接全局添加就行:

gem 'pg', '>= 1.2.0' # 根据你的ActiveRecord版本调整最低版本

2. 确认ActiveRecord对应的最低pg版本

不同版本的ActiveRecord对pg的版本要求不一样,你可以对照下面的参考值调整:

  • Rails 7.x系列:pg >= 1.4.0
  • Rails 6.1.x系列:pg >= 1.2.0
  • Rails 6.0.x系列:pg >= 1.1.0
  • Rails 5.2.x系列:pg >= 0.18.0
    要是拿不准,也可以直接运行bundle show activerecord查看你的ActiveRecord版本,再去对应版本的文档里确认要求。

3. 重新安装依赖并提交代码

在本地终端执行这些命令:

bundle install
git add Gemfile Gemfile.lock
git commit -m "Add pg gem for Heroku PostgreSQL compatibility"

4. 重新部署到Heroku并执行迁移

推送更新后的代码到Heroku:

git push heroku main

然后别忘了运行Heroku上的数据库迁移:

heroku run rake db:migrate

小技巧如果还是报错

要是部署后还是有问题,去检查一下Gemfile.lock里的pg版本是不是真的符合要求。有时候bundle install可能会安装较低的版本,这时候可以直接指定明确的版本号来强制安装,比如适配Rails 7的话可以写:

gem 'pg', '~> 1.4.0'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:24:26