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

从Cloud9部署Rails应用到Heroku遇SQLite3依赖错误求助

解决Rails部署Heroku时的sqlite3 Gem加载错误

这个问题我之前碰到过好多次,核心原因是Heroku不支持SQLite3作为生产环境数据库——SQLite是文件型数据库,Heroku的dyno容器是临时的,重启后数据会丢失,而且Heroku的运行环境也没有适配SQLite的配置。咱们一步步来解决:

1. 调整Gemfile的数据库依赖

把SQLite3限制在开发和测试环境,同时为生产环境添加PostgreSQL的gem(Heroku官方推荐的数据库):

# Gemfile
group :development, :test do
  gem 'sqlite3', '~> 1.4' # 可以指定合适的版本号
end

group :production do
  gem 'pg' # PostgreSQL的Ruby驱动
end

2. 更新依赖并提交代码

在本地运行命令更新Gemfile.lock(不用安装生产环境的pg,避免本地环境冲突):

bundle install --without production

然后把修改后的Gemfile和Gemfile.lock提交到Git:

git add Gemfile Gemfile.lock
git commit -m "Switch production database to PostgreSQL"

3. 确认database.yml的生产环境配置

Rails默认的production配置已经适配Heroku的PostgreSQL,你可以检查config/database.yml的production部分,确保是这样的:

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

Heroku会自动为你的应用设置DATABASE_URL环境变量,这个配置会自动读取它,不用手动填数据库地址。

4. 重新部署并执行迁移

把代码推送到Heroku:

git push heroku main # 如果你的主分支是master就用git push heroku master

然后再执行数据库迁移:

heroku run rake db:migrate

这样应该就能顺利完成迁移了,以后部署生产环境就不会再碰到sqlite3的加载错误啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:59:34