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 中的主要内容,如果未能解决你的问题,请参考以下文章