mysql2 gem引发了Gem::LoadError,但它已经在Gemfile中。

104
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命令,并尝试重启服务器,但仍然收到错误提示。


在添加 gem 并重启服务器后,你是否运行了 bundle 命令? - Bachan Smruty
@BachanSmruty:是的,我已经完成了。 - Mysoulisinseoul
这个已经部署了吗?你运行过 bundle install --deployment 吗? - j-dexx
在我的情况下,有一个执行不佳的 "group :mysql, optional: true do"。删除了逻辑并将 gem 硬编码包含进去。 - TheSatinKnight
14个回答

247

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

gem 'mysql2', '~> 0.3.18'

显然,截至2015年9月8日回答此问题时,mysql2仍不兼容较新版本的rails,因为rails 4.2.4非常新。在Gem文件中使用上述行并运行:

bundle install 

你应该可以开始了


2
在mysql2_adapter.rb文件中,我找到以下代码:gem 'mysql2','~> 0.3.13' require 'mysql2'这可能是默认的mysql2版本4.x.x无法工作的原因。 - Oscar Jiang

27

当我指定一个mysql2 gem版本(0.4.0)之前的版本时,它对我起作用。由于Rails 4.2.4和0.4.0版本的gem存在问题,因此为了解决问题,我只需指定先前发布的gem(0.3.20),这样就可以正常工作了!

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

你可以在这里查看所有宝石的版本:https://rubygems.org/gems/mysql2/versions


17

更改为

gem 'mysql2', '~> 0.3.18'

在您的Gemfile中进行如下声明。

官方mysql2 Github上的这个主题说要这样做。如果你使用Rails版本4.x.x,你需要声明该版本号。

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

然后运行bundle update mysql2命令。


2
谢谢!准确来说,您不想使用 bundle update 命令,因为这会更新所有的 gem。正确的命令是 bundle update mysql2。这可能很明显,但是使用错误的命令可能会产生意想不到的后果。(要从 bundle update 中恢复,请运行 git checkout -- Gemfile.lock - Nick

8

如果您正在使用新版本的Rails > 4,则可能会出现此问题。

执行以下两个简单步骤,即可解决此问题。 打开您的Gemfile文件并找到下面这行:

gem 'mysql2'

将该行替换为特定的mysql版本,如下所示:

gem 'mysql2', '~> 0.3.18'

现在停止服务器并运行bundle命令

bundle install

现在重新启动您的服务器。它应该可以正常工作。
rails s

8

我在升级到Rails 4.1后遇到了相同的错误,但是通过更新mysql2库解决了此问题。在Rails应用程序文件夹中运行以下命令:

$ bundle update mysql2

7

作为一名初学者,我无法理解这行代码:
gem 'mysql2', '~> 0.3.18'

它的意思是进入你的rails项目文件夹,然后找到mysql2这一行,它可能是0.4*之类的版本号,你需要将其改为gem 'mysql2', '~> 0.3.18'

由于我们已经有了新的定义,所以我们需要重新构建依赖关系,只需执行简单的命令即可,如上所述:bundle install


5

由于新版本的mysql2(0.4.1)无法加载mysql2_adaptor,因此它无法加载mysql2 gem。这对我来说有效。

gem 'mysql2', '~> 0.3.13'

并运行

bundle install

3
我遇到了同样的错误,这是因为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',目前它可以正常工作。

2

1
由于新版本的mysql2(>=0.4.0)无法加载mysql2_adaptor,因此它无法加载mysql2 gem。你可以尝试使用以下代码:gem 'mysql2', '~> 0.3.13'。希望这样能够解决问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接