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

Rails应用部署至Heroku失败:SQLite3依赖加载错误求助

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

这个问题其实很常见——Heroku不支持SQLite3作为生产环境数据库,原因有两个:一是SQLite是基于文件的数据库,Heroku的dyno(运行容器)重启后所有本地文件都会被重置,数据会直接丢失;二是Heroku的环境默认没有安装SQLite的系统依赖,就算你在Gemfile里强制添加sqlite3,部署时也会触发加载失败的报错。

下面是具体的修复步骤:

1. 调整Gemfile配置

把sqlite3限制在开发和测试环境,同时为生产环境添加Heroku官方推荐的PostgreSQL对应的pg gem:

# Gemfile
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.3.0' # 注意保持和你报错里的Ruby版本一致

# 仅在开发、测试环境使用sqlite3
group :development, :test do
  gem 'sqlite3', '~> 1.4' # 选择和你的Rails 5.1.4兼容的版本即可
end

# 生产环境切换为PostgreSQL
group :production do
  gem 'pg'
end

# 其他你的Rails依赖...
gem 'rails', '~> 5.1.4'
# ...

2. 更新依赖并锁定版本

在本地终端运行命令,确保只安装开发/测试环境的依赖,同时更新Gemfile.lock(这个文件Heroku会严格校验):

bundle install --without production

3. 提交代码修改

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

git add Gemfile Gemfile.lock
git commit -m "Switch production database to PostgreSQL (fix Heroku sqlite3 error)"

4. 重新部署到Heroku

推送更新后的代码到Heroku远程仓库:

git push heroku main # 如果你的默认分支是master,就替换成git push heroku master

5. 执行生产环境数据库迁移

部署完成后,别忘了在Heroku上运行数据库迁移,确保生产环境的数据库结构正确:

heroku run rails db:migrate

这样操作后,Heroku就会在生产环境自动使用PostgreSQL,不会再尝试加载sqlite3,问题应该就能顺利解决了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 10:05:56