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


103
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,并尝试重新启动服务器,但仍然收到错误消息。


bundle在添加gem并重新启动服务器后运行了吗?
Bachan Smruty 2014年

@BachanSmruty:是的,我已经做到了。
Mysoulisinseoul

这是在部署吗?您是否运行过bundle install --deployment
j-dexx 2014年

Answers:


247

如果升级到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 

你应该很好去


2
在msyql2_adapter.rb中,我找到以下代码:gem'mysql2','〜> 0.3.13'要求'mysql2',这可能是默认mysql2版本4.xx无法正常工作的原因
Oscar Jiang

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

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


16

改成

gem 'mysql2', '~> 0.3.18'

在您的Gemfile中。

官方mysql2 Github上的这个线程说可以做到这一点。如果您使用的是Rails版本4.xx,则需要声明该版本号

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

然后运行bundle update mysql2


2
谢谢!确切地说,您不希望bundle update这样做,因为这会更新您所有的宝石。命令是bundle update mysql2。可能看起来很明显,但这是错误的命令,可能会导致意想不到的后果。(要还原bundle update,运行git checkout -- Gemfile.lock
尼克

8

升级到Rails 4.1之后,我遇到了同样的错误,并且设法通过更新mysql2来解决了该错误。在您的rails应用文件夹中运行此命令:

$ bundle update mysql2

8

如果您使用的是Rails> 4的较新版本,则可能会发生此问题。

做这两个简单的步骤,就可以了。打开您的Gemfile并找到以下行

gem 'mysql2'

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

gem 'mysql2', '~> 0.3.18'

现在停止服务器并运行捆绑软件

bundle install

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

rails s

7

作为红宝石的初学者,我无法弄清宝石'mysql2','〜> 0.3.18'

它只是意味着转到您的rails项目文件夹,然后有mysql2的行,它类似于0.4 *,因此您可以将其更改为 gem'mysql2','〜> 0.3.18'

并有了新的定义,我们必须重建依赖关系,以便按照顶部软件包安装中的说明执行该简单命令


5

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

gem 'mysql2', '~> 0.3.13'

并运行

bundle install

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',到目前为止,它仍然可以工作。



1

它不会加载mysql2 gem,因为新版本的mysql2(> = 0.4.0)gem无法加载mysql2_adaptor。你可以试试这个吗?

gem 'mysql2', '~> 0.3.13'

希望它应该能工作。


0

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

gem 'mysql2'

在database.yml中设置mysql2适配器

adapter: mysql2

也很重要!


0

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

我必须将我的gemfile,gem'mysql2'更改为gem'mysql2','〜> 0.3.13',然后在rails中键入bundle install然后尝试用rails s并出现错误,因此我尝试在bundle中键入mysql2然后更新mysql2 rails,并且有效



-1

我以前安装了mysql2 0.4.5,但这给了我这个错误,所以我通过以下方法安装了另一个版本的mysql2:

gem安装mysql2 --version 0.3.20

希望这能解决您的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.