# Mysqlのバージョンを5.7にアップグレードした時にハマったので、対処方法をメモ
bundle exec rails
を実行すると以下のようなエラーがでる
.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/bundler-1.13.6/lib/bundler/runtime.rb:94:in `rescue in block (2 levels) in require': There was an error while trying to load the gem 'mysql2'. (Bundler::GemRequireError) Gem Load Error is: uninitialized constant Mysql2::Client::SECURE_CONNECTION
mysql2が古いのかと思って bundle udpate mysql2
を実行してみると変化なし。。。
google先生に聞くと、以下のサイトを教えてくれたので、試してみる。
- https://github.com/rails/rails/issues/21544
- Rails(mysql2 adapter)の方で0.3系依存で定義してしまっているので、mysql2最新の0.4.0を受け付けない
- Gemfileでgem ‘mysql2’, ‘~> 0.3.20'のように0.3系に設定すれば問題ない
とのことなので、Gemfileを以下のように変更
-gem 'mysql2' +gem 'mysql2', '~> 0.3.20'
に変更してbundle install
を実行。するとエラーが変わっている!!!
.rbenv/versions/2.1.0/lib/ruby/gems/2.1.0/gems/bundler-1.13.6/lib/bundler/runtime.rb:94:in `rescue in block (2 levels) in require': There was an error while trying to load the gem 'mysql2'. (Bundler::GemRequireError) Gem Load Error is: uninitialized constant Mysql2::Client::SECURE_CONNECTION
これもわからにので、google先生に聞いてみると以下のサイトを教えてくれた。
ということで、以下のファイル(なければ作成)。管理者権限が必要なので、 sudo vim /etc/hosts.allow
管理者権限で作成・編集するこを忘れずに
mysqld: ALL: allow
そしてMySQLの再起動
$ mysql.server restart Shutting down MySQL .... SUCCESS! Starting MySQL .. SUCCESS!
これで無事、bundle exec rails s
でRailsアプリが起動できました。
前は、brew のリンク先を変えてたりして、対応しましたが、gemの方で対応しているのでgem のバージョン指定するほうが楽ですね。
Ruby on Rails 5アプリケーションプログラミング
- 作者: 山田祥寛
- 出版社/メーカー: 技術評論社
- 発売日: 2017/04/14
- メディア: 大型本
- この商品を含むブログを見る
- 作者: 掌田津耶乃
- 出版社/メーカー: 秀和システム
- 発売日: 2016/12/17
- メディア: 単行本
- この商品を含むブログを見る
- 作者: すがわらまさのり,前島真一,近藤宇智朗,橋立友宏
- 出版社/メーカー: 技術評論社
- 発売日: 2014/06/06
- メディア: 大型本
- この商品を含むブログ (8件) を見る