ライブラリがロードされていません:mysql2 gemを使用してOS X 10.6で 'rails server'を実行しようとすると、libmysqlclient.16.dylibエラーが発生します


206

私はしばらくこれに苦労してきました。

Snow LeopardマシンにRails 3、gem、mysqlをインストールしました。最初のプロジェクトを作成して実行しようとするまで、すべて順調でした

rails server

これを実行すると、次のようになります。

jontybrook$ rails server
/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: dlopen(/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.16.dylib (LoadError)
  Referenced from: /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
  Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
    from /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2.rb:7
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:62:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:62:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:51:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:51:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler.rb:112:in `require'
    from /Users/jontybrook/Dropbox/CODING/simple_cms/config/application.rb:7
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:28:in `require'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:28
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:27:in `tap'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:27
    from script/rails:6:in `require'
    from script/rails:6
jontybrook$ 

私の知る限り、問題はmysql2 gemにあります。MySQLは正常に動作しているようで、私のGemfileはmysql2を参照しています。私のdatabase.ymlファイルも問題ないようです。

エラーの言及

Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

それでも

jontybrook$ cd /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2
jontybrook$ ls
client.rb   em.rb       error.rb      mysql2.bundle result.rb

MySQL2.bundleがあります!?

古いmysql gemを使用すると、WEBrickは正常に起動します。しかし、それは理想的ではありませんね。

私はグーグルが私に与えることができるすべてを試しました!どんな助けも大歓迎です。

回答:


393

私はこれらの答えのいずれかを私のために機能させることができませんでしたが、これは私がそれを私のために機能させるために使用したコマンドです。これにより、mysqlを更新するたびにinstall_name_toolを使用する必要がなくなります。

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

11
それがその問題を解決する最も簡単で正しい方法です。
Voldy

2
これをありがとう。上記のマークされた回答は1つのサイトでのみ機能しましたが、これは永続的に機能しました。そのmo 'ベタ。
fregas

12
何が起こっているのか知りたい人のために、このコマンドは2番目の場所から最初の場所へのシンボリックリンクを作成します。gemがでMySQLクライアントライブラリを検索すると/usr/lib、そのリンクは実際にインストールされている場所に解決されます。OS Xでは、通常、の下/usr/local/mysql/libにあります。このコマンドがリンクする場所です。libが別の場所にインストールされている場合は、このコマンドを調整する必要があります。locate libmysqlclient.18.dylib結果を入力して、の後の最初の引数を置き換えます-s
シボーン

1
@Sean D.、locate libmysqlclient.18.dylibを実行すると、この出力がWARNING: The locate database (/var/db/locate.database) does not exist. To create the database, run the following command: sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist Please be aware that the database can take some time to generate; once the database has been created, this message will no longer appear.何が間違っているのですか?
GiH 2013年

1
@GiH指示されたコマンドを実行するだけです(sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist)。これにより、ハードドライブのインデックス作成プロセスが開始され、locateコマンドが将来的に機能するようになります。ただし、ほとんどの場合、その必要はないと思います。luvlssが提供するコマンドをそのまま使用できます。
シボーン

93

私はこれを最終的に解決しました!

RubyとRailsをRVMの下に再インストールしました。Rubyバージョン1.9.2-p136を使用しています。

rvmで再インストールした後も、このエラーが発生していました。

最後に、それを解決した魔法のコマンドは次のとおりです。

sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib ~/.rvm/gems/ruby-1.9.2-p136/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

これが誰かを助けることを願っています!


1
これはどういうわけかmysqlの特権をリセットし、mysqlのドキュメントで説明されているようにファイルを使用してパスワードのリセットを実行した後でもログインできなくなりました。
Coderama、2011

2
ありがとう、これでうまくいきました。そして、同じ問題を抱えている他の人にとっては、rvmを使用する場合はsudoをスキップします。そうでない場合は、権限がおそらく変更されます。
DanneManne 2011年

2
magicコマンドは、RVMを使用していない場合mysql2-0.2.6/lib/mysql2/mysql2.bundleでも機能します。gemがインストールされている場所を指すように最後の引数を変更するだけです。
トビアスコーエン

2
どうもありがとうございます。一体どうやってこれを理解しましたか?
デレク、

7
ありがとうございました!Ruby 1.9.2-p180、mysql2 gem 0.3.10でRVM 1.6.4を実行しているMac OS X Lionに少し異なるコマンドが必要でした: sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.3.10/lib/mysql2/mysql2.bundle
Randy Eppinger

88

この修正は私にとって非常にうまくいきました:

以下を〜/ .profileに追加します

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

http://www.rickwargo.com/2010/12/16/installing-mysql-5-5-on-os-x-10-6-snow-leopard-and-rails-3/


1
どうもありがとうございました。これでうまくいきました。(Mac OS X 10.6.6i、Ruby 1.9.3p327)、RVMを使用。
datnt

確認しました。私がosx Maverick 10.9.1に追加しなければならないのはそれだけでした
Artur79

40

私にとってこれは、mysqlをアップグレードしたがmysql2 gemを更新していなかったからです。gemを再インストールすると修正されます...

gem pristine mysql2


これが選択された答えです。
El Guapo

26

同じ問題があります。libmysqlclientライブラリが見つからないようです。私のために働いた一時的な修正は次のとおりです:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/

構成でロードパスがどこに指定されているのか、または何に設定されているのかわかりませんが、mysqlインストールがそこに含まれていないようです。より永続的な解決策が見つかれば、もう一度投稿します。

編集:実際には、この修正は問題をより正確に解決するようです。


24

以下をあなたに追加してください~/.bash_profile

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

これは私のために働いた


はい、1.9.3-p448で動作します。それが受け入れられた答えではないのは残念です。
andreimarinescu 2013年

17

OSX El Capitanでは、次のように更新します。

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

それはのようなエラーをスローします

ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted

これを回避するには、最初に次libmysqlclient.18.dylibのコマンドを使用して検索します

User$ locate libmysqlclient.18.dylib

私の場合、それは戻った /usr/local/mysql-5.5.24-osx10.5-x86_64/lib/libmysqlclient.18.dylib

したがって、代わりにusr/lib/次のusr/local/lib/ようなシンボリックリンクを作成します。

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib

詳細:https : //forums.developer.apple.com/thread/7935


1
エルキャピタンでは、最後の行だけが必要でした:sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
Justin

それが誰かを助けてうれしい。:D
Sony Mathew 2015年

これは、ターゲットリンクが/usr/local/libフォルダーにあるelcapitanの正しい答えです
Arnold Roa

13

次の行は私のために働きます。Mac 10.7.2を使用しています。

sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib


1
これは私の問題を修正したものです。ありがとう!
ジャスティンボゾニア2013

11

ちょうどこの問題に遭遇しました。私がしなければならなかったすべてはmysql2 gemをアンインストールして再インストールすることです。これが他の人のために働くことを願っています


1
Mavericksを実行している私のマシンで、gem uninstall mysql2を使用してmysql2 gemのすべてのバージョンを削除All versionsし、プロンプトで応答しました。次に、brew upgrade mysqlを実行してから、gem install mysql2を実行しました。
Martin Streicher、2014年

4

これは私にとってそれがどのように機能したかです:

以下のコマンドを実行しました
sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib〜/ .rvm / gems / ruby​​-1.9.2-p180 / gems / mysql2-0.2.7 /lib/mysql2/mysql2.bundle

私の環境:
$ rails -v Rails 3.0.6

$ mysql --version
mysql Ver 14.14 Distrib 5.5.11、readline 5.1を使用するosx10.6(i386)用

$ ruby​​ -v
ruby 1.9.2p180(2011-02-18リビジョン30909)[x86_64-darwin10.7.0]

これが誰かを助けることを願っています。


3

ありがとう、おがぽ!そのエイリアスのエクスポートは私にとってはうまくいき、それから私はリンクをたどりました、そして私の場合、mysql2.bundleは/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundleで稼働していたのでinstall_name_toolを調整して、〜/ .rvm内のバンドルではなく、そのバンドルを変更し、それを実行する必要がある方法で動作させました。

だから今:

   $ otool -L /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle 
    /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle:
        /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/libruby.1.dylib (compatibility version 1.8.0, current version 1.8.7)
        /usr/local/mysql/lib/libmysqlclient.16.dylib (compatibility version 16.0.0, current version 16.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)

3

こんにちは、フレディ・アンデルセンの推奨リンクから私のために働きました

sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql /lib/libmysqlclient.16.dylib /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

コマンドで私のバージョンのmysqlに変更する必要がありました、ありがとう


3

現在のプロジェクトのgemsetを削除して再作成し、バンドルのインストールを再実行することで、この問題を解決しました。mysqlの新しいバージョンをインストールしたことが原因だと思います。


3

Djangoを使用brewしているときにこの問題が発生しました。多くのオープンソースプログラムbrewをインストールするために使用しましたmysql。以前はインストールしていたため、次のことを実行する必要がありました。

sudo ln -s /usr/local/Cellar/mysql/5.5.20/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

必ずライブラリのバージョンに置き換えてください!


3

bundle install mysql --force助けて頂きました。の結果としてなくなった依存関係を再インストールしましたbrew uninstall mysql


Unknown switches '--force'
アーノルドロア

2

ジョンティ、私もこれで苦労しています。

ここに手掛かりがあると思います:

otool -L /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle:
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/libruby.1.dylib (compatibility version 1.8.0, current version 1.8.7)
    libmysqlclient.16.dylib (compatibility version 16.0.0, current version 16.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)

dylibへのパスが短すぎることに注意してください。

私はgemのインストール手順がdylibパスをどこに残しているかを理解しようとしていますが、私がgemを自分で構築したことがないので遅いです。

もっと見つけたらもっと投稿します!


2

数日前にまったく同じ問題が発生しました。私は最終的にそれを解決することができました。方法はよくわかりませんが、とにかく何をしたかをお話しします。多分それはあなたを助けるでしょう。

最初にRVMをダウンロードしました。まだ使用していない場合は、使用することを強くお勧めします。基本的に、Ruby、RoR、RubyGemsの新しい個別インストール用のサンドボックスを作成します。実際、複数のインストールを同時に行って、即座に互いに切り替えることができます。それは魅力のように働きます。

なぜこれが便利なのですか?OS XのデフォルトのRubyインストールをいじってはいけないからです。システムはそれに依存しています。RubyとRoRのデフォルトのインストールをそのままにして、RVMを使用して新しいものを作成し、独自の開発に使用できるようにするのが最善です。

個別のRubyインストールを作成したら、RoR、RubyGems、およびmysqlをインストールしただけで動作しました。私が取った正確な手順については、私の質問を参照してください: Rails、MySQLなどのインストールがすべてうまくいかない

繰り返しますが、これで問題が解決するかどうかはわかりません。しかし、それは確かに私にとってはトリックであり、いずれにしてもRVMを使用することを強くお勧めします。


2

上記のソリューションでは、(たとえば)TextMateのRailsプラグインでは機能しないことがわかりました。同様のエラーが発生しました(データベーススキーマの取得時)。

だから何をしたか、ターミナルを開く:

cd /usr/local/lib
sudo ln -s ../mysql-5.5.8-osx10.6-x86_64/lib/libmysqlclient.16.dylib .

mysql-5.5.8-osx10.6-x86_64を独自のパス(またはmysql)に置き換えます。

これにより、libへのシンボルリンクが作成され、railsはコマンドラインから実行されます。ruby-on-rails-tmbundleのようなTextMateプラグインも同様です。

明確にするために:これにより、railsサーバーの起動時に発生するエラーも修正されます。


2

これは通常、mysqlをアップグレードするときに発生します。古いmysql libs上に構築されたインストール済みのmysql2 gemは、新しいlibでは動作しません。再インストールするだけです。

mysql2をでアンインストールしgem uninstall mysql2ます。次に、それをインストールしますgem install mysql2


1

私のプロジェクトフォルダーcontainsgに.rvmrcファイルを作成して解決しました。

rvm use <yourrubie>

次に、プロジェクトのパスを入力します

cd ~/myprojectpath

それから私は走る

bundle install

1

luvlssのコマンドの私のバージョン:

Mac OSX 10.10.5

MySQL 5.6.27

乗客5.0.21

sudo ln -s /usr/local/mysql-5.6.27-osx10.8-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

私のように、さまざまなリンクをたくさん試している場合は、次のようにクリーンアップを行います。

sudo unlink /usr/lib/libmysqlclient.18.dylib


1

ターミナルを開き、以下を実行します:

export PATH=$PATH:/usr/local/mysql/bin

うまくいくはずです。


1
これでうまくいきました、ありがとう!!! Visual Studio CodeでDjangoを実行するのに問題がありました。mysqlclientをvirtualenvにインストールしたかどうかにかかわらず、エラーが発生し続けます。
Irshu

0

OSXを使用していて、brewを使用してmysqlをインストールしている場合、次のことができます。

brew link mysql

バージョンに問題がある場合(私のgemには5.6.25が必要でしたが、mysql 5.7を実行していました)、次のことができます。

brew unlink mysql
brew switch mysql 5.6.25

0

私にとっては、手動でmysqlをアンインストールする必要がありました

brew uninstall mysql
rm -rf /usr/local/var/mysql
brew install mysql
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.