mysql2とRailsの組み合わせでエラーが発生する

スポンサーリンク

概要

RailsのGemを更新しようとしたら、MySQLとの接続に使われるmysql2のバージョンが0.5.0に上がっていました。

そこで、mysql2のバージョンを0.5.0に上げてテストを実行したら次のように表示されてmysql2が使えませんでした。

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).

これについて調べてみたのでそのことをここに書いておきます。

スポンサーリンク

環境

  • Rails 5.1.5
  • mysql2 0.5.0
スポンサーリンク

原因

エラーメッセージを見てみると、mysql2が見つからないというように書かれています。

実はRailsでは、データベース関係のGemについて使用できるGemのバージョンを制限しています。

今回私が遭遇したRailsのバージョン5.1.5では、バージョンの指定が~> 0.4.4となっており、0.5.0以上のバージョンの場合は読み込まれません。

そのため、mysql2のバージョン0.5.0をインストールしても、読み込まれず、mysql2は見つからないというエラーメッセージが表示されました。

スポンサーリンク

対処

このようなことから、現状ではmysql2のバージョン0.5.0にはせずに、バージョンを上げても0.5.0未満にしておく必要があります。

実際には、Gemfileのmysql2の部分を次のようにしましょう。

gem 'mysql2', '~> 0.4.4'

このようにしておけば、bundle updateを実行しても0.4.xの範囲で新しいバージョンのものに更新します。

スポンサーリンク

今後

次のプルリクエストで解決されているため、おそらく次のRailsのバージョンではこの問題が解決していると思います。

github.com/rails/rails/pull/32310

スポンサーリンク

さいごに

データベースのGemのバージョンがRailsの方で指定されているとは知らなかったので、いい勉強になりました。

コメント

タイトルとURLをコピーしました