web-dev-qa-db-ja.com

Rails 4-Gem :: LoadError:データベースアダプターに「mysql2」を指定しましたが、gemはロードされません

私のgemfileには:

gem 'mysql2'

私のdatabase.ymlは次のとおりです。

default: &default
  adapter: mysql2
  database: <%= ENV['db_name'] %>
  username: <%= ENV['db_user'] %>
  password: <%= ENV['db_pass'] %>
  Host:     <%= ENV['db_Host'] %>
  pool: 32
  socket:   <%= ENV['socket'] %>

development:
  <<: *default

production:
  <<: *default

bundle updatebundle installの両方を実行しましたが、Gemfile.lockにmysql2が表示されます。

ただし、rake db:migrateを実行すると、コンピューターとステージングサーバーの両方で次のようになります。

myproject.com(master)$ rake db:migrate
WARNING: Use strings for Figaro configuration. 10000012508 was converted to "10000012508".
WARNING: Use strings for Figaro configuration. 860526407370038 was converted to "860526407370038".
rake aborted!
Gem::LoadError: Specified 'mysql2' for database adapter, but the gem is not loaded. Add `gem 'mysql2'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).
.....

間違ったバージョンのmysql2などが存在しないことを確認するために、bundle clean --forceを実行し、bundle installおよびbundle updateを再度実行し、gem listを実行するとmysql2 (0.4.0)および他のバージョンはありません。

どんなアイデアでも大歓迎です。


溶液

現在、Rails 4.1.xおよび4.2.xの問題です。これは バグレポート であり、Rails 4.2の次のリリースで修正される予定です。 x(リンクのコメント内のdcorrのクレジット)。

それまでの間、gemfileに次の行を追加して、mysql2のバージョン0.3.18にダウングレードすることで修正できます。

gem 'mysql2', '~> 0.3.18'
151
newUserNameHere

さらに更新してください - 問題の解決策は正しいです。

4番目のコメントは、注意する価値があります。

これはmysql2のバグではありません、それはActiveRecordアダプタの要件の問題です: http://github.com/Rails/rails/issues/21544 。これはRailsマスターで修正されました: https://github.com/Rails/rails/commit/5da5e3772c32593ecf2f27b8865e81dcbe3af692

Rails 4.2.44-2-stableブランチに結び付け、最新のmysql2と連携させることができました。

enter image description here

gem 'Rails', '~> 4.2.4', git: "git://github.com/Rails/rails.git", branch: '4-2-stable'
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw] #-> Rails 4.1+

#DB
gem 'mysql2'
50
Richard Peck

ただしてください

この宝石がgem 'mysql2', '~> 0.3.18'で動作するRails version 4.x.x

gem 'mysql2', '~> 0.4.0'をインストールするとgem load errorが発生し、互換性の問題が発生します

67
Kaleem Ullah

それが投稿された時と使用されているRailsのバージョンに関連したこの特定の質問に対する答えは、問題がbundle updateを行うこととmysql2バージョンが最新のRails ActiveRecordとの非互換性の問題を持つ0.4.xへの更新から生じることです。

繰り返しますが、これは古いバージョンのRails/ActiveRecordを使用している人々のための解決策ではないことに注意してください。

簡単な解決策は、以下のようにgemfileで単にmysql2バージョンを指定することです。

gem 'mysql2', '0.3.20'

長い解決策は、ActiveRecordの更新またはmysql2の何かが変更されるのを待つことです。

8

Railsのバージョンをアップグレードできる場合は、Gemfileをこれに変更すると、mysql2 gemのバージョンをダウングレードせずに問題が解決します。

gem 'Rails', '4.2.6'
7
Omac

この問題はこちらで解決されました。 https://github.com/brianmario/mysql2/issues/95

Rails 4.xの場合、0.5.xへのアップグレードを避けるためにgemをmysql2 '〜> 0.4.0'に固定してください。

Gemfile:

gem 'Rails', '4.2.8'
gem 'mysql2', '~> 0.4.0'

それからbundle update Rails mysql2を実行してください。

私は現在mysql v 8.0.11を使用しています。

7
Abram

完全な初心者として私はこれを行う方法について混乱してしまったので、私はただ試しチェックをして、そしてついに私のサーバーを動かしました。

作業ディレクトリのファイル( "work")に入り、そこからmysql 2がインストールされている作成したアプリのファイル( "sample_app")に入ります。gemファイル( "Gemfile")に行きますeditgem 'mysql2'からgem 'mysql2'、 '〜> 0.3.18'

cmdに戻って "bundle install"コマンドを実行してください。

そのため、上記のファイルを括弧で囲んで編集するディレクトリを指定してください。 "c\work\sample_app\Gemfile"

私が助けになったことを願っています。

5
avinash v p

あなたのマシンにいくつかのmysqlパッケージが足りないとき、これは通常起こります。 gem install mysql2からエラーが発生しましたか?どのOSを使っていますか?

Debianやubuntuの場合はSudo apt-get install libmysqlclient-devを試してください。

また、gemがGemfileのgroupステートメントの内側に配置されていないことも確認してください。

4
The F

同じ問題がありましたが、gemファイルの先頭にsource 'https://rubygems.org'を追加して問題を解決しました。

ステップ:

gemファイルにsource 'https://rubygems.org'を追加してください。 mysql2 gemをコメントアウトしてgem 'mysql2', '~> 0.3.18'を追加するbundle installを実行

1
Mr94

これを試して:

bundle update mysql2

このコマンドはあなたの 'my​​sql2' gemを最新バージョン(0.3.17以上であるべきです)に更新してRailsサーバーを起動します。

0
mmike