web-dev-qa-db-ja.com

Ruby:mysql2-Gemが機能しない(Mac OS X Snow Leopard、Ruby 1.9.2)

Rubyをコンパイルし、rubygems、mysql2、Railsをインストールしましたが、これは非常にうまく機能しました。しかし、Railsを起動しようとすると、次のエラーメッセージが表示されます。サーバ:

/usr/local/Ruby/lib/Ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2.rb:7:in `require ':dlopen(/ usr/local/Ruby/lib/Ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle、9):ライブラリがロードされていません:libmysqlclient.18.dylib(LoadError)
参照元:/usr/local/Ruby/lib/Ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle 
理由:画像が見つかりません-/ usr/local/Ruby /lib/Ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
/usr/local/Ruby/lib/Ruby/gems/1.9.1/gemsから/mysql2-0.2.6/lib/mysql2.rb:7:in `'
 from /usr/local/Ruby/lib/Ruby/gems/1.9.1/gems/bundler-1.0.10/lib /bundler/runtime.rb:68:in `require '
 from/usr/local/Ruby/lib/Ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime。 rb:68:in `block(2 level)in require '
 from /usr/local/Ruby/lib/Ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime .rb:66:in `each '
 from /usr/local/Ruby/lib/Ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime.rb:66: `ブロックイン/usr/local/Ruby/lib/Ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime.rb:55:in`each'[.____から '
が必要です。] from /usr/local/Ruby/lib/Ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler/runtime.rb:55:in `require '
 from/usr/users/filzo/Documents/Rails /の/local/Ruby/lib/Ruby/gems/1.9.1/gems/bundler-1.0.10/lib/bundler.rb:120:in`require'
 blog/config/application.rb:7:in `'
 from/usr/local/Ruby/lib/Ruby/gems/1.9.1/gems/railties-3.0.5/lib/Rails/commands。 rb:28:in `require '
 from /usr/local/Ruby/lib/Ruby/gems/1.9.1/gems/railties-3.0.5/lib/Rails/commands.rb:28:in `block in '
 from /usr/local/Ruby/lib/Ruby/gems/1.9.1/gems/railties-3.0.5/lib/Rails/commands.rb:27:in` tap' 
 from /usr/local/Ruby/lib/Ruby/gems/1.9.1/gems/railties-3.0.5/lib/Rails/commands.rb:27:in `'
 from script/Rails:6:in `require '
 from script/Rails:6:in`' 

私はいくつかの可能な解決策を試しました(例: http://railsforum.com/viewtopic.php?pid=23125#23125 with libmysqlclient.18.dylib);しかし、私には何もうまくいきませんでした。あなたが私を助けてくれることを願っています。

編集:これは私にとって問題を修正したようです:

Sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/Ruby/lib/Ruby/gems/1.9.1/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle 

とにかく;それはMySQLまたはRubyコードのバグですか?

24
Phil

簡単で最良の方法の1つは、コマンドでソフトリンクを作成することです-

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

http://rorguide.blogspot.com/2011/07/getting-error-library-not-loaded.html

32
Ritesh Kumar

これは既知の(そして修正されていない!) MySQLバイナリディストリビューションのバグ のようです。

実行中install_name_tool mysql2.bundleファイルで機能します。ファイルを削除して再構築すると、正方形のファイルに戻ります。また、この修正をリンクする他のすべてのものに適用する必要があります。より良い解決策は、ライブラリ自体の問題を修正することです。

$ Sudo install_name_tool -id \
  /usr/local/mysql/lib/libmysqlclient.18.dylib \
  /usr/local/mysql-5.5.12-osx10.6-x86_64/lib/libmysqlclient.18.dylib

Mysql2 gemの削除と再構築:

$ gem uninstall mysql2
$ gem install mysql2

...ライブラリへの変更を取得し、環境変数をいじくり回すことなく、すべてが正しく機能するはずです。

15
Guy Bolton King

Mac OS XでRVM(優れた選択肢)を使用している場合-これが最終的に私のために機能した魔法のコマンドです。

Sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /Users/*USERNAME*/.rvm/gems/Ruby-1.9.2-p180/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

現在の設定に従って、構文の[〜#〜] username [〜#〜]を適切に置き換えます。また、mysql gemのバージョンが異なる場合は、それも変更してください。

13
kodbale

Install_nameツールのより良い代替手段は、mysqllibのパスをDYLD_LIBRARY_PATH環境変数に追加することです。/etc/profile:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib

または、Oracle Instant Clientもインストールしているので、次のようにします。

export Oracle_HOME="/usr/local/Oracle/instantclient_10_2"
export DYLD_LIBRARY_PATH=$Oracle_HOME
export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/mysql/lib
4
user1038086

Rakeが正しいMySQLクライアントライブラリを見つけられるように、このシンボリックリンクを作成してみてください。

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

3
pedro

これが役立つかどうかはわかりませんが、OS X 10.7.1Lionを使用しています。私の場合、ターミナルウィンドウを開き、/ Library/Ruby/Gems/1.8/gems/mysql2-0.3.7に移動すると、RVMが吠え、新しい.rvmrcファイルまたは変更された.rvmrcファイルが見つかったと言いました。そのファイルの内容は次のとおりです。

rvm use 1.9.2@mysql2 --create

この.rvmcファイルを信頼するかどうかを尋ねられました。はいと言ったところ、次のように返されました。

Using /Users/dan/.rvm/gems/Ruby-1.9.2-p290 with gemset mysql2

それが終わったら、次のコマンドを実行しました。

Sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /Library/Ruby/Gems/1.8/gems/mysql2-0.3.7/lib/mysql2/mysql2.bundle 

一度やったら、行く準備ができていました。お役に立てれば!

2
CSharper