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

时间:2014-04-08 09:00:15

标签: ruby-on-rails mysql2 gemfile

Gem::LoadError
Specified 'mysql2' for database adapter, but the gem is not loaded.
Add `gem 'mysql2'` to your Gemfile

加载以下文件时发生此错误:

active_record/base

这是我在运行rails服务器时遇到的错误。

The mysql2 gem has been added to the Gemfile as well.

我已完成bundle install,并尝试重新启动服务器,但仍然收到错误。

14 个答案:

答案 0 :(得分:245)

如果在升级到rails 4.2.4(也使用rails 4.1.5)时遇到此错误,请尝试使用此版本的mysql2:

gem 'mysql2', '~> 0.3.18'

显然mysql2仍然不兼容较新版本的rails,因为rails 4.2.4在2015年9月8日回答这个问题的时候非常新,所以在Gem文件中使用上面的行并运行:

bundle install 

你应该好好去

答案 1 :(得分:27)

当我在最新版本(0.4.0)之前指定mysql2 gem版本时,它对我有用。 出于某种原因,Rails 4.2.4和gem 0.4.0存在问题。所以,为了解决这个问题,我刚刚指定了之前发布的gem:0.3.20,它对我来说很好用!

gem 'mysql2', '~> 0.3.20'
bundle install

您可以在此处查看所有宝石版本:https://rubygems.org/gems/mysql2/versions

答案 2 :(得分:16)

更改为

gem 'mysql2', '~> 0.3.18'

在您的Gemfile中。

官方mysql2 Github上的这个帖子说要做到这一点。如果您是rails版本4.x.x,则需要声明该版本号。

https://github.com/brianmario/mysql2/issues/675

然后运行bundle update mysql2

答案 3 :(得分:8)

升级到Rails 4.1后我得到了同样的错误,我设法通过更新mysql2来解决它。在rails app文件夹中运行:

$ bundle update mysql2

答案 4 :(得分:8)

如果您使用较新版本的rails>可能会发生此问题4

做这两个简单的步骤,它会起作用。 打开Gemfile并找到以下行

gem 'mysql2'

用特定的mysql版本替换该行,如下所示

gem 'mysql2', '~> 0.3.18'

现在停止服务器并运行bundle

bundle install

现在重启服务器。它应该工作。

rails s

答案 5 :(得分:7)

作为红宝石的初学者我无法理解这条线 gem' mysql2','〜> 0.3.18'

它只是意味着转到你的rails项目文件夹然后有 mysql2的行就像0.4 *所以你可以改成它 gem' mysql2','〜> 0.3.18'

并且由于我们有新的定义,我们必须重建依赖关系,以便按照捆绑安装

中的说明执行该简单命令

答案 6 :(得分:5)

它没有加载mysql2 gem,因为新版本的mysql2(0.4.1)gem无法加载mysql2_adaptor。这对我有用。

gem 'mysql2', '~> 0.3.13'

并运行

bundle install

答案 7 :(得分:2)

我有同样的错误,这是因为Rails 4.1需要最小的mysql2版本0.3.13,最大兼容Windows版本是0.3.11。

所以我编辑了文件c:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\gems\activerecord-4.1.1\lib\active_record\connection_adapters\mysql2_adapter.rb并将行gem 'mysql2', '~> 0.3.13'更改为gem 'mysql2', '~> 0.3.11',到目前为止一直有效。

答案 8 :(得分:2)

以下是我修复此问题的方法:

 bundle config
 bundle config --delete without
 bundle install --deployment --without development test postgres

现金: How do you undo bundle install --without

答案 9 :(得分:1)

它没有加载mysql2 gem,因为新版本的mysql2(> = 0.4.0)gem无法加载mysql2_adaptor。你能试试吗?

gem 'mysql2', '~> 0.3.13'

希望它能够奏效。

答案 10 :(得分:0)

我解决了这个问题,安装了mysql2 gem local(gem install mysql2,bundle install)并将以下行添加到Gemfile中:

gem 'mysql2'

在database.yml中设置mysql2适配器

adapter: mysql2

也很重要!

答案 11 :(得分:0)

我是Ruby on Rails和网站的新品牌,但听到了对我有用的东西。

我不得不将我的gemfile,gem'mysql2'改为gem'mysql2','〜> 0.3.13' 然后在rails我输入bundle install 然后我尝试了rails并且出错了 所以然后我尝试捆绑更新mysql2 然后在rails typed rails s中,它工作

答案 12 :(得分:0)

我解决了这个问题,安装了libmysqlclient-dev。 sudo aptitude安装libmysqlclient-dev 然后运行捆绑软件。

答案 13 :(得分:-1)

我以前安装了mysql2 0.4.5但是这给了我这个错误,所以我安装了另一个版本的mysql2:

gem install mysql2 --version 0.3.20

希望这能解决你的问题。