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

Posted

技术标签:

【中文标题】mysql2 gem 的 Gem::LoadError,但它已经在 Gemfile 中【英文标题】:Gem::LoadError for mysql2 gem, but it's already in Gemfile 【发布时间】:2014-05-20 20:50:46 【问题描述】:
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了吗? @BachanSmruty:是的,我已经做到了。 这是在部署中吗?你跑了吗bundle install --deployment 就我而言,有一个执行不佳的“组:mysql,可选:真做”。删除了逻辑,只包含了硬编码的 gem。 【参考方案1】:

我解决了这个问题,安装了 libmysqlclient-dev。 sudo aptitude install libmysqlclient-dev 然后运行 ​​bundle。

【讨论】:

【参考方案2】:

改成

gem 'mysql2', '~> 0.3.18'

在您的 Gemfile 中。

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

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

然后运行bundle update mysql2

【讨论】:

谢谢!准确地说,您不想要bundle update,因为这会更新您的所有宝石。命令是bundle update mysql2。可能看起来很明显,但这是错误的命令,可能会产生意想不到的后果。 (要从bundle update 恢复,请运行git checkout -- Gemfile.lock【参考方案3】:

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

gem install mysql2 --version 0.3.20

希望这能解决您的问题。

【讨论】:

【参考方案4】:

我是 Ruby on Rails 和网站的新手,但听说什么对我有用。

我不得不将我的 gemfile,gem 'mysql2' 更改为 gem 'mysql2','~> 0.3.13' 然后在rails中我输入了bundle install 然后我尝试了 rails 并得到了错误 所以然后我尝试了捆绑更新mysql2 然后在 rails 中输入 rails s,它就起作用了

【讨论】:

【参考方案5】:

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

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

gem 'mysql2'

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

gem 'mysql2', '~> 0.3.18'

现在停止服务器并运行 bundle

bundle install

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

rails s

【讨论】:

【参考方案6】:

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

gem 'mysql2', '~> 0.3.13'

希望它应该可以工作。

【讨论】:

【参考方案7】:

作为 ruby​​ 的初学者,我无法弄清楚这条线 gem 'mysql2', '~> 0.3.18'

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

由于我们有了新的定义,我们必须重建依赖关系,以便执行上面解释的简单命令 bundle install

【讨论】:

【参考方案8】:

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

gem 'mysql2', '~> 0.3.13'

然后运行

bundle install

【讨论】:

【参考方案9】:

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

你应该很高兴

【讨论】:

在 msyql2_adapter.rb 中,我找到以下代码: gem 'mysql2', '~> 0.3.13' require 'mysql2' 这可能是默认 mysql2 版本 4.xx 不起作用的原因【参考方案10】:

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

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

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

【讨论】:

【参考方案11】:

这是我解决这个问题的方法:

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

学分: How do you undo bundle install --without

【讨论】:

【参考方案12】:

我解决了这个问题,在本地安装了 mysql2 gem(gem install mysql2, bundle install)并将下面的行添加到 Gemfile:

gem 'mysql2'

在database.yml中设置mysql2适配器

adapter: mysql2

也很重要!

【讨论】:

【参考方案13】:

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

【讨论】:

【参考方案14】:

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

$ bundle update mysql2

【讨论】:

以上是关于mysql2 gem 的 Gem::LoadError,但它已经在 Gemfile 中的主要内容,如果未能解决你的问题,请参考以下文章

gem列表中的mysql2 gem但获取项目找不到gem

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

尝试使用 mysql2 gem 安装应用程序时出错

无法安装 mysql2 gem

MySQL2 gem 无法安装

无法在 Bigsur 上安装 mysql2 Gem