Rails 4 – Gem :: LoadError:为数据库适配器指定'mysql2',但没有加载gem

在我的gemfile中我有:

gem 'mysql2' 

我的database.yml如下所示:

 default: &default adapter: mysql2 database: <%= ENV['db_name'] %> username: <%= ENV['db_user'] %> password: <%= ENV['db_pass'] %> host: <%= ENV['db_host'] %> pool: 32 socket: <%= ENV['socket'] %> development: <<: *default production: <<: *default 

我已经运行bundle updatebundle install ,我的Gemfile.lock显示mysql2。

但是当我运行rake db:migrate我在计算机和登台服务器上都得到了这个:

 myproject.com(master)$ rake db:migrate WARNING: Use strings for Figaro configuration. 10000012508 was converted to "10000012508". WARNING: Use strings for Figaro configuration. 860526407370038 was converted to "860526407370038". rake aborted! Gem::LoadError: Specified 'mysql2' for database adapter, but the gem is not loaded. Add `gem 'mysql2'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord). ..... 

只是为了确保没有错误版本的mysql2或者什么的,我做了bundle clean --force ,并且再次运行bundle installbundle update ,当我运行gem list我看到了mysql2 (0.4.0) ,没有其他版本。

任何想法将不胜感激。


Rails 4.1.x和4.2.x目前是一个问题,根据这个bug报告 ,它将在rails 4.2.x的下一个发行版中得到修复(在链接评论中称为dcorr)。

与此同时,您可以通过将此行添加到您的gemfile来降级到版本0.3.18的mysql2:

 gem 'mysql2', '~> 0.3.18' 

只是进一步更新 – 问题的解决scheme是正确的。

第四点评价值得注意的是:

这不是mysql2的错误,这是ActiveRecord适配器中的需求的问题: http : //github.com/rails/rails/issues/21544 。 这是固定在铁轨大师: https : //github.com/rails/rails/commit/5da5e3772c32593ecf2f27b8865e81dcbe3af692

我能够将Rails 4.2.4绑定到4-2-stable分支,并使用最新的mysql2

在这里输入图像说明

 gem 'rails', '~> 4.2.4', git: "git://github.com/rails/rails.git", branch: '4-2-stable' gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw] #-> Rails 4.1+ #DB gem 'mysql2' 

做就是了:

gem 'mysql2', '~> 0.3.18'这个gem可以使用rails version 4.xx

如果安装gem 'mysql2', '~> 0.4.0'会产生gem加载错误并导致兼容性问题

对于这个特定问题的回答,涉及何时发布以及Rails的版本是由于bundle update而导致的问题,而且你的mysql2版本更新到0.4.x,这与最新的Rails ActiveRecord存在不兼容的问题。

再次请注意,这不是使用旧版Rails / ActiveRecord的人的解决scheme。

快速解决scheme是简单地指定gemfile中的mysql2版本,如下所示:

gem 'mysql2', '0.3.20'

长期的解决办法是等待更新到ActiveRecord或在mysql2中的东西改变。

如果你能够升级你的rails版本,那么把你的Gemfile改为这个,它将解决这个问题,而不降级mysql2 gem版本:

 gem 'rails', '4.2.6' 

这通常发生在你的机器上缺less一些mysql包时。 你从gem install mysql2得到任何错误? 你在做什么操作系统?

如果在debian或者ubuntu上试试sudo apt-get install libmysqlclient-dev

还要确保gem没有放在你的Gemfile中的group声明中。

作为一个完整的初学者,我对如何做到这一点感到困惑,所以我只是做了一次试验性的检查,终于让我的服务器工作,这是我如何工作。

进入工作目录(“工作”)的文件,从那里进入你创build的应用程序的文件(“sample_app”),其中安装mysql 2转到gem文件(“Gemfile”)编辑gem'mysql2 'gem 'mysql2','〜> 0.3.18'

现在回到cmd并运行命令“捆绑安装”。

所以考虑到上面的括号中的文件编辑文件的目录应该是。 “C:\工作\ sample_app \的Gemfile”

希望我有一些帮助。

有同样的问题,但添加source 'https://rubygems.org'的顶部的解决问题。

脚步:

添加source 'https://rubygems.org'到你的gem文件。 注释掉mysql2 gem并添加gem 'mysql2', '~> 0.3.18'运行bundle install

尝试这个:

 bundle update mysql2 

这个命令会把你的'mysql2'gem更新到最新版本(应该是0.3.17或更高版本)并启动你的rails服务器。