Gem::LoadError: 为数据库适配器指定了“sqlite3”,但未加载 gem

Posted

技术标签:

【中文标题】Gem::LoadError: 为数据库适配器指定了“sqlite3”,但未加载 gem【英文标题】:Gem::LoadError: Specified 'sqlite3' for database adapter, but the gem is not loaded 【发布时间】:2014-08-11 18:35:34 【问题描述】:

我正在尝试将我的应用推送到 heroku,但收到此消息。

Gem::LoadError: Specified 'sqlite3' for database adaptor, but the gem is not loaded.

但我没有。我的 database.yml 文件中的任何地方都没有 sqlite3

development:
  adapter: postgresql
  encoding: unicode
  database: blog_development
  pool: 5
  timeout: 5000
  host:  localhost

test:
  adapter: postgresql
  database: blog_test
  pool: 5
  timeout: 5000

production:
  adapter: postgresql
  database: blog_production
  pool: 5
  timeout: 5000

我的适配器名称是 psotgresql。我什至自己打开了文件

cat database.yml

我搜索了该文件,但找不到 postgresql。这是我的宝石文件

ruby '2.1.0'
gem 'rails', '4.1.1'

group :development, :test do
  gem 'pg', '0.17.1'
  gem 'rspec-rails', '3.0.1'
end

group :production do
  gem 'pg', '0.17.1'
  gem 'rails_12factor'
end

group :test do
  gem 'selenium-webdriver', '2.35.1'
  gem 'capybara', '2.1.0'
end

gem 'sass-rails', '~> 4.0.2'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'sprockets-rails', '~> 2.1.3'
gem 'bootstrap-sass', '3.1.1.1'

gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.1.1'

group :doc do

  gem 'sdoc', require: false
end

gem 'bcrypt', '~> 3.1.7'

我在这里的生产环境中有 pg。我已经多次运行 bundle install、bundle update、git add、git commit 和 git push heroku master,但仍然收到此消息。

我不明白这一点。我没有为我的数据库适配器指定 sqlite3。

我说不出话来。

【问题讨论】:

grep sqlite -r ./ -i 从 Rails 应用程序的根目录执行时的输出是什么? 您是否忘记运行bundle update 来更新您的Gemfile.lock 文件,或者您是否忘记在尝试推送到Heroku 之前将您的更改提交到Git?如果是这样,那么这个问题是重复的。 【参考方案1】:

我必须将我的 sqlite3 版本指定为 1.3.13:

gem 'sqlite3', '~> 1.3.13'

然后运行bundle update

【讨论】:

【参考方案2】:

我也遇到过这个问题。我发现安装的sqlite3是1.4.2版本。 为了解决这个问题,我添加了这段代码:

gem 'sqlite3', '~> 1.3.6', '

以下是我的设置:

$ 导轨 -v

Rails 4.2.3

$ 宝石环境

RubyGems Environment:
– RUBYGEMS VERSION: 2.5.1
– RUBY VERSION: 2.3.0 (2015-12-25 patchlevel 0) [x86_64-linux]
– INSTALLATION DIRECTORY: /home/armano/.rbenv/versions/2.3.0/lib/ruby/gems/2.3.0
– USER INSTALLATION DIRECTORY: /home/armano/.gem/ruby/2.3.0
– RUBY EXECUTABLE: /home/armano/.rbenv/versions/2.3.0/bin/ruby
– EXECUTABLE DIRECTORY: /home/armano/.rbenv/versions/2.3.0/bin
– SPEC CACHE DIRECTORY: /home/armano/.gem/specs
– SYSTEM CONFIGURATION DIRECTORY: /home/armano/.rbenv/versions/2.3.0/etc

【讨论】:

当我尝试在 Ruby 2.4 上启动一个新的 Rails 4.2.11.3 项目时,它对我有用,谢谢!【参考方案3】:

听起来你可能有:

    忘记运行 bundle updatebundle install 来更新您的 Gemfile.lock 文件,或者

    在推送到 Heroku 之前,忘记使用 git commit 将您的 GemfileGemfile.lock 更改提交到 Git。

如果您的问题是 2nd 案例,那么这个问题是重复的,我只需要在某处找到规范问题...

【讨论】:

我有第二个案例...doh。【参考方案4】:

我遇到了这个问题。

在忽略为bundle install 放入“--without production”参数后,我手动从 Gemfile.lock 中删除了“pg (0.17.1)”,试图掩盖我的踪迹。添加回来解决了这个问题。

【讨论】:

【参考方案5】:

在 cloud9 IDE(亚马逊)上启动 rails 5.0 教程时遇到了同样的问题。通过在云编辑器中运行 rails new 安装的默认 sqlite3 版本是 3.7.17 2013-05-20

这解决了我的问题:gem 'sqlite3', '~> 1.4.0'

在此之后我成功启动了“yay you're on rails page”

【讨论】:

【参考方案6】:

在测试环境中,您没有特定的 DB gem。将 'pg' gem 从生产和开发转移到通用。

【讨论】:

以上是关于Gem::LoadError: 为数据库适配器指定了“sqlite3”,但未加载 gem的主要内容,如果未能解决你的问题,请参考以下文章

Gem::LoadError: Specified 'sqlite3' for database adapter, but the gem is not loaded

mysql2 gem 的 Gem::LoadError,但它已经在 Gemfile 中

安装 Phusion 乘客时出错“在 [] (Gem::LoadError) 中找不到乘客 (>= 0)”

Gem::LoadError: You have already activated rake

如何使用 Bundler 添加 gem

如何在黄瓜rails中将mysql转换为psql