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

Mys*_*oul 104 ruby-on-rails mysql2 gemfile

Gem::LoadError
Specified 'mysql2' for database adapter, but the gem is not loaded.
Add `gem 'mysql2'` to your Gemfile
Run Code Online (Sandbox Code Playgroud)

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

active_record/base
Run Code Online (Sandbox Code Playgroud)

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

The mysql2 gem has been added to the Gemfile as well.
Run Code Online (Sandbox Code Playgroud)

我已经完成了bundle install,并尝试重新启动服务器,但仍然得到错误.

Has*_*imi 245

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

gem 'mysql2', '~> 0.3.18'
Run Code Online (Sandbox Code Playgroud)

显然mysql2仍然不兼容较新版本的rails,因为rails 4.2.4在我2015年9月8日回答这个问题时已经很新了所以请在你的Gem文件中使用上面的代码并运行:

bundle install 
Run Code Online (Sandbox Code Playgroud)

你应该好好去

  • 在msyql2_adapter.rb中,我找到以下代码:gem'mysql2','〜> 0.3.13'require'mysql2'这可能是默认mysql2版本4.xx无法工作的原因 (2认同)

rom*_*5jp 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
Run Code Online (Sandbox Code Playgroud)

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


sug*_*ane 16

改成

gem 'mysql2', '~> 0.3.18'
Run Code Online (Sandbox Code Playgroud)

在你的Gemfile中.

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

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

然后跑bundle update mysql2.

  • 谢谢!确切地说,您不希望进行“捆绑更新”,因为这会更新您所有的宝石。命令是“ bundle update mysql2”。可能看起来很明显,但这是错误的命令,可能会带来意想不到的后果。(要从“捆绑包更新”还原,请运行“ git checkout-Gemfile.lock”) (2认同)

val*_*alo 8

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

$ bundle update mysql2
Run Code Online (Sandbox Code Playgroud)


Pra*_*thi 8

如果您使用较新版本的rails> 4,则可能会出现此问题

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

gem 'mysql2'
Run Code Online (Sandbox Code Playgroud)

用下面的特定mysql版本替换该行

gem 'mysql2', '~> 0.3.18'
Run Code Online (Sandbox Code Playgroud)

现在停止服务器并运行bundle

bundle install
Run Code Online (Sandbox Code Playgroud)

现在重启你的服务器.它应该工作.

rails s
Run Code Online (Sandbox Code Playgroud)


Mua*_*gar 7

作为ruby的初学者,我无法弄清楚行'gemql'','〜> 0.3.18'

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

因为我们有了新的定义,所以我们必须重建依赖关系,以便按照top bundle install中的说明执行这个简单的命令


sus*_*prj 5

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

gem 'mysql2', '~> 0.3.13'
Run Code Online (Sandbox Code Playgroud)

并运行

bundle install
Run Code Online (Sandbox Code Playgroud)