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

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 installbundle updategem listmysql2 (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'

ベストアンサー1

ただこうしてください:

gem 'mysql2', '~> 0.3.18'この宝石はrails version 4.x.x

インストールするとgem 'mysql2', '~> 0.4.0'gemロードエラーが発生し、互換性の問題が発生します。

おすすめ記事