エラー:
/Users/askar/.rbenv/versions/2.2.3/lib/Ruby/gems/2.2.0/gems/mysql2-0.3.20/lib/mysql2.rb:31:in `require': dlopen(/Users/askar/.rbenv/versions/2.2.3/lib/Ruby/gems/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/mysql2-0.3.20/mysql2/mysql2.bundle, 9): Library not loaded: /usr/local/lib/libmysqlclient.18.dylib (LoadError)
Referenced from: /Users/askar/.rbenv/versions/2.2.3/lib/Ruby/gems/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/mysql2-0.3.20/mysql2/mysql2.bundle
Reason: image not found - /Users/askar/.rbenv/versions/2.2.3/lib/Ruby/gems/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/mysql2-0.3.20/mysql2/mysql2.bundle
Gemfile内:gem 'mysql2'
$ ls -al/usr/local/lib/libmysql *
lrwxr-xr-x 1 askar admin 49 Nov 13 10:48 /usr/local/lib/libmysqlclient.20.dylib -> ../Cellar/mysql/5.7.9/lib/libmysqlclient.20.dylib
lrwxr-xr-x 1 askar admin 42 Nov 13 10:48 /usr/local/lib/libmysqlclient.a -> ../Cellar/mysql/5.7.9/lib/libmysqlclient.a
lrwxr-xr-x 1 askar admin 46 Nov 13 10:48 /usr/local/lib/libmysqlclient.dylib -> ../Cellar/mysql/5.7.9/lib/libmysqlclient.dylib
lrwxr-xr-x 1 askar admin 37 Nov 13 10:48 /usr/local/lib/libmysqld.a -> ../Cellar/mysql/5.7.9/lib/libmysqld.a
lrwxr-xr-x 1 askar admin 44 Nov 13 10:48 /usr/local/lib/libmysqlservices.a -> ../Cellar/mysql/5.7.9/lib/libmysqlservices.a
$ ls -al /usr/local/Cellar/mysql/5.7.9/lib/
total 84392
drwxr-xr-x 9 askar admin 306 Nov 12 22:16 .
drwxr-xr-x 14 askar admin 476 Nov 13 10:48 ..
-r--r--r-- 1 askar admin 3780168 Nov 13 10:48 libmysqlclient.20.dylib
-r--r--r-- 1 askar admin 4280752 Nov 12 22:16 libmysqlclient.a
lrwxr-xr-x 1 askar admin 23 Nov 12 22:16 libmysqlclient.dylib -> libmysqlclient.20.dylib
-r--r--r-- 1 askar admin 35126528 Nov 12 22:16 libmysqld.a
-r--r--r-- 1 askar admin 9048 Nov 12 22:16 libmysqlservices.a
drwxr-xr-x 3 askar admin 102 Nov 13 10:48 pkgconfig
drwxr-xr-x 43 askar admin 1462 Nov 12 22:17 plugin
drwxr-xr-x 43 askar admin 1462 Nov 12 22:17 plugin
ご覧の通り、私はlibmysqlclient.20.dylib
を持っていますが、20
ではなく18
です。それ以外の場合は、解決策 here に従います.
私は最近、エルキャピタンにアップグレードしましたが、それが原因だとはわかりません。
UPDATE:
Gemを再インストールするためのヒントをくれた@Rashmirathiに感謝します。
注意したいのは、Gemfileで次のように指定する必要があることです。
gem 'mysql2', '~> 0.3.18'
そうでなければ、エラーが発生しました:
データベースアダプタに「mysql2」を指定しましたが、gemはロードされていません。
gem 'mysql2'
をGemfileに追加します(そして、そのバージョンがActiveRecordに最低限必要であることを確認してください)。
しかし、最終的にエラーが発生しました:
Mysql2 :: Error
パスワードの有効期限が切れています。ログインするには、期限切れのパスワードをサポートするクライアントを使用して変更する必要があります。
これは、パスワードを再度設定することで解決されます。
SET PASSWORD=PASSWORD('your_password');
以前同じ問題が発生していましたが、gem mysql2
。
OS X El Capitain以上のユーザーの場合、これで問題が解決します。
Sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
私はPythonで同様の問題がありました:libmysqlclient.20.dylib
の代わりに 18
エルキャピタン。 pip install --upgrade mysql
それを修正しましたが、python2でのみ動作します。
Homebrewを使用しているため、すべてを段階的にクリアしてこの問題を修正しました。
Rails app Gemfileでmysql2 gemをコメントアウトします
「#gem 'mysql2'」
バンドルからmysql2 gemを削除します
バンドルインストール
Mysql2 gemをアンインストールします(すべてのバージョン)
gemアンインストールmysql2
Homebrewを更新
醸造アップデート
Mysqlのすべてのバージョンをアンインストールします
brew uninstall --force mysql
Mysqlを再インストールします
mysqlをインストールする
Gemfileでmysql2 gemのコメントを解除します
gem mysql2
Mysql2をバンドルに追加
バンドルインストール
このアプローチは少しやり過ぎかもしれませんが、私にはきれいに感じます。
ここでチャイムしたい-私はちょうどlibmysqlclient.18.dylib 18-20の違いで同じ問題を抱えていました。 mysql
gem(activerecord-mysql-adapter
の依存関係)を再インストールすると違いが生じました。再インストールmysql2
は何もしませんでした。
明確にするための編集:私のエラーメッセージはmysql gemにさかのぼりますが、検索によってこのスレッドを見つけたので、ここに含めます。
Please install the mysql adapter: `gem install activerecord-mysql-adapter` (dlopen(/Users/eriks/.rvm/gems/Ruby-2.1.4/gems/mysql-2.9.1/lib/mysql/mysql_api.bundle, 9):
Library not loaded: /usr/local/lib/libmysqlclient.18.dylib
Referenced from: /Users/eriks/.rvm/gems/Ruby-2.1.4/gems/mysql-2.9.1/lib/mysql/mysql_api.bundle
Reason: image not found - /Users/eriks/.rvm/gems/Ruby-2.1.4/gems/mysql-2.9.1/lib/mysql/mysql_api.bundle) (LoadError)