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サーバーを再起動しようとしましたが、それでもエラーが発生します。


bundlegemを追加してサーバーを再起動した後で実行しましたか?
Bachan Smruty 2014

@BachanSmruty:はい、そうしました。
Mysoulisinseoul 2014

これは展開中ですか?あなたが実行したbundle install --deployment
J-dexx

回答:


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' require '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
Nick

8

Rails 4.1にアップグレードした後も同じエラーが発生し、mysql2を更新してなんとか解決しました。これをrails appフォルダーで実行します。

$ bundle update mysql2

8

この問題は、新しいバージョンのレール> 4を使用している場合に発生する可能性があります

これらの2つの簡単な手順を実行してください。Gemfileを開き、以下の行を見つけます

gem 'mysql2'

その行を以下のような特定のmysqlバージョンに置き換えます

gem 'mysql2', '~> 0.3.18'

サーバーを停止してバンドルを実行します

bundle install

サーバーを再起動します。うまくいくはずです。

rails s

7

Rubyの初心者なので、gem 'mysql2'、 '〜> 0.3.18'という行を理解できませんでした。

それは単にRailsプロジェクトフォルダーに移動することを意味し、mysql2の行が0.4 *のようになるので、gem 'mysql2'、 '〜> 0.3.18'に変更できます。

新しい定義があるため、依存関係を再構築して、トップバンドルのインストールで説明されているような簡単なコマンドを実行する必要があります。


5

新しいバージョンのmysql2(0.4.1)gemがmysql2_adaptorをロードできないため、mysql2 gemをロードしません。これは私のために働いています。

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.rbgem 'mysql2', '~> 0.3.13'gem 'mysql2', '~> 0.3.11'に変更しましたが、これまでのところ機能します。



1

新しいバージョンのmysql2(> = 0.4.0)gemがmysql2_adaptorをロードできないため、mysql2 gemをロードしません。試して頂けますか?

gem 'mysql2', '~> 0.3.13'

うまくいけば、うまくいくはずです。


0

私は問題を解決し、mysql2 gemローカルをインストールし(gem install mysql2、バンドルインストール)、次の行をGemfileに追加しました。

gem 'mysql2'

mysql2アダプターをdatabase.ymlに設定する

adapter: mysql2

も重要でした!


0

私は、Ruby on RailsとWebサイトの新機能を真っすぐに見ていますが、うまくいったことを聞いています。

私は私のgemfile、gem 'mysql2'をgem 'mysql2'、 '〜> 0.3.13'に変更する必要があり、次にrailsでbundle installと入力し、次にrails sを試行してエラーが発生したため、バンドル更新mysql2を試行し、次にrailsで入力しましたレールs、そしてそれは働いた


0

libmysqlclient-devをインストールして問題を解決しました。sudo aptitudeはlibmysqlclient-devをインストールし、後でバンドルを実行します。


-1

以前にmysql2 0.4.5をインストールしましたが、このエラーが発生したため、次の方法でmysql2の別のバージョンをインストールしました。

gem install mysql2 --version 0.3.20

これで問題が解決することを願っています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.