結論
MySQL のバージョンが 5.7 になったのが原因。
MySQL 5.7 には libmysqlclient.20.dylib
, MySQL 5.6 には libmysqlclient.18.dylib
がついてくるので、MySQL 5.6 にダウングレードすることで対処する。
brew uninstall mysql
brew install mysql@5.6
環境
- Homebrew 0.9.9
- OS X El Capitan 10.11.4
- MySQL 5.7.11 (installed with Homebrew)
- Ruby 1.9.3-p591
- Rails 3.1.12
エラーの内容
rails を起動させようとすると下記のエラーになる。長いので途中に改行を入れている。
/xxxxx/.bundle/ruby/1.9.1/gems/activesupport-3.1.12/lib/active_support/dependencies.rb:240:in `require':
dlopen(/xxxxx/.bundle/ruby/1.9.1/gems/mysql2-0.3.16/lib/mysql2/mysql2.bundle, 9):
Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.18.dylib (LoadError)
Referenced from: /xxxxx/.bundle/ruby/1.9.1/gems/mysql2-0.3.16/lib/mysql2/mysql2.bundle
Reason: image not found - /xxxxx/.bundle/ruby/1.9.1/gems/mysql2-0.3.16/lib/mysql2/mysql2.bundle
要は /usr/local/opt/mysql/lib/libmysqlclient.18.dylib
が読み込めないと。
試しに find /usr -name libmysqlclient.18.dylib
なんてしてみたけど、そもそも libmysqlclient.18.dylib
がなかった。
先行記事を読んでみる
MacにてRailsでMysqlを使おうとすると『 9): Library not loaded: libmysqlclient.18.dylib (LoadError) 』が発生する場合の対策
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
で解決したとのことだが、今回は手元に libmysqlclient.18.dylib
がない。
アップデートした El Capitan で Library not loaded: libmysqlclient.18.dylib (LoadError) と出る
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
で解決したとのことだが、今回は手元に libmysqlclient.18.dylib
がない。
Library not loaded: /usr/local/lib/libmysqlclient.18.dylibのエラーの解決
libmysqlclient.18.dylib
がないという同様の状況だが、たまたま保有していた libmysqlclient.18.dylib
のバイナリを使うことで解決している。今回は(ry
mysql - Create a symlink for the libmysqlclient.18.dylib library - Stack Overflow
1 位の回答が MySQL の 5.7 から 5.6 へのダウングレードを薦めている。これはいけそう。
結論
brew uninstall mysql
brew install mysql@5.6
で MySQL をダウングレードする。
MySQL 5.6 が入ると自動で /usr/local/lib/libmysqlclient.18.dylib
が置かれるので、エラーが解消する。
必要に応じて bundle install
し直すといいかもしれない。