■環境
MacOSX 10.11.2
端末:MacBookAir
Homebrew 0.9.5
Ruby 2.2.2
Rails 4.2.3
Macでrailsのmysqlを起動したら、以下のエラーが起きて詰まった。
$ bundle exec rake db:migrate
rake aborted!
LoadError:dlopen(/Users/username/rails/app_name/vendor/bundle/ruby/2.2.0/gems/mysql2-0.3.20/lib/mysql2/mysql2.bundle,
9): Library not loaded: /usr/local/lib/libmysqlclient.18.dylib ...
解決策をググると、シンボリックリンクにて、適切な場所にlibmysqlclient.18.dylibを設置すればよいと書いてある。
引用元:http://qiita.com/w7tree/items/656b5d3e6a6f0a0b475e
以下を実行する。
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib
/usr/lib/libmysqlclient.18.dylib
上記により、/usr/lib/libmysqlclient.18.dylibというリンクのパスで、/usr/local/mysql/libの中のlibmysqlclient.18.dylibファイルにアクセスできるようになるはず。
すると以下のように権限がないとエラーになる。
/usr/lib/libmysqlclient.18.dylib: Operation not permitted
権限がないとエラーが出るが、chown~で権限を与えたり、rootでログインしてもOperation not permitted
が出る。ここから、どこまでググっても良い記事がなかったので、とりあえず、brew doctor
で出た警告に関して、すべて対応する。しかし、上記のエラーは解決されない。
落ち着いて、/usr/local/の中を見るとmysqlフォルダーがないことに気づいた。次にエラーメッセージの通り、/usr/local/の中のlibフォルダーを見たが、ここにもそもそもlibmysqlclient.18.dylibがないことに気づいた(libmysqlclient.20.dylibはあった)。なぜかrake db:migrateしようとしていたアプリのファイルの中に、libmysqlclient.18.dylibが存在したため、libmysqlclient.18.dylibをmvコマンドでusr/local/のlibフォルダーに移動すると解決した。
■考察
エラーメッセージを元にググり、解決策をそのままコピペしたが上手くいかなかった。これを見てくださった人が本エラーに陥ったとして、シンボリックリンクの解決策でも上手くいかない場合は、そもそもlibmysqlclient.18.dylibというファイルは、どこのlib(ライブラリーフォルダー)に入っているか確認することが重要だと思う。適切な場所にある場合は、シンボリックリンクで行けるのだと思う。
■参考
・libmysqlclient.18.dylibのエラーに関して
http://ja.stackoverflow.com/questions/18922/rails%E3%81%ABmysql%E3%82%92%E5%85%A5%E3%82%8C%E3%81%A6rake-dbcreate%E5%AE%9F%E8%A1%8C%E6%99%82%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E8%A7%A3%E6%B6%88%E6%96%B9%E6%B3%95
http://qiita.com/w7tree/items/656b5d3e6a6f0a0b475e
・シンボリックリンクに関して
http://qiita.com/pugiemonn/items/e5fb508df690a323ee14
・homebrewに関して
http://qiita.com/omega999/items/6f65217b81ad3fffe7e6