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

部署含SQLite3 gem的Rails应用到Heroku失败,求解决方案

解决Heroku部署Rails应用时的sqlite3依赖问题

这个问题我之前也碰到过!Heroku完全不支持sqlite3作为生产环境的数据库——毕竟sqlite是文件型数据库,Heroku的dyno(运行容器)是临时的,每次重启数据都会丢失,而且多实例运行的时候还没法共享数据。所以咱们得把生产环境的数据库换成Heroku原生支持的PostgreSQL,具体步骤如下:

1. 调整Gemfile的数据库依赖

打开你的Gemfile,把sqlite3放到development和test环境组里,同时给生产环境添加pg(PostgreSQL的Ruby驱动)。修改后的Gemfile应该长这样:

source 'https://rubygems.org'
gem 'rails', '4.2.5'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
# Authentication Gem...

# 开发和测试环境继续用sqlite3,方便本地调试
group :development, :test do
  gem 'sqlite3'
end

# 生产环境用PostgreSQL适配Heroku
group :production do
  gem 'pg'
end

2. 更新Gemfile.lock并安装依赖

在本地终端运行这条命令,它会跳过生产环境的依赖安装(不用在本地装pg),同时更新Gemfile.lock文件:

bundle install --without production

3. 提交修改到Git仓库

把调整后的Gemfile和Gemfile.lock提交到Git:

git add Gemfile Gemfile.lock
git commit -m "切换生产环境数据库为PostgreSQL以适配Heroku部署"

4. 重新推送到Heroku

现在再把代码推送到Heroku就不会报错了:

git push heroku main

(如果你的默认分支是master,就把main换成master)

5. 可选:运行生产环境数据库迁移

如果你的应用有数据库迁移文件,推完代码后记得在Heroku上执行迁移:

heroku run rails db:migrate

这样操作完,你的Rails应用应该就能顺利部署到Heroku啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:32:32