Techioz Blog

OSX 上の Rails + MySQL: ライブラリがロードされていません: libmysqlclient.18.dylib

概要

私は Ruby (および Rails) を始めたばかりです。 http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#sec:ruby gems に従って、rvm を使用してセットアップを行いました。 sqlite ですべてがうまく動作しています。

ここで、開発のほとんどを MySQL で行っているため、MySQL に変換してみようと思います。私の Gemfile では、sqlite を mysql2 に置き換えました。

group :development, :test do
#  gem 'sqlite3', '1.3.5'
  gem 'mysql2'
  gem 'rspec-rails', '2.9.0'
end

しかし、MySQL で Rails 用の DB を作成しようとすると、次のようになります。

$ rake db:create --trace
rake aborted!
dlopen(/Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle
  Reason: image not found - /Users/username/.rvm/gems/ruby-1.9.3-p194@rails3tutorial2ndEd/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle

homebrew 経由で MySQL を再インストールすることを推奨する他の投稿も見たことがありますが (私のものはダウンロード可能な DMG 経由でインストールされました)、他の非 Ruby プロジェクト用の他のデータベースがすでにいくつかあるので、それはやめたいと思います。

実際、Rails が探しているファイルはあります。 /usr/local/mysql/lib/libmysqlclient.18.dylib にインストールされます。 Rails にそれを見つける方法を伝える最善の方法は何でしょうか?

解決策

解決策は非常に簡単です。 ~/.bash_profile または ~/.profile ファイルにライブラリ パスを追加します。

MYSQL=/usr/local/mysql/bin
export PATH=$PATH:$MYSQL
export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

それでも動作しない場合(私にとってはこれで動作します):

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

install_name_tool を使用したブログがたくさんありますが、私は OSX Lion を使用しているため、これらは機能しません。

sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/bin/indexer
sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/bin/search