web-dev-qa-db-ja.com

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

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

今、私は物事を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/[email protected]/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /Users/username/.rvm/gems/[email protected]/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle
  Reason: image not found - /Users/username/.rvm/gems/[email protected]/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle

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

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

112
George Armhold

解決策は非常に簡単です。 〜/ .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
302
atejeda

エルキャピタンで私はln: /usr/lib/libmysqlclient.18.dylib: Operation not permittedを得ました

エルキャピタンでは、/usr/lib/に制限フラグが設定され、セキュリティを無効にしない限り書き込みができないため、代わりに/usr/local/libにリンクを配置します。

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

Railsサーバーは再び正常に動作します。

121
TinMonkey

この質問のタイトルは、私が遭遇した問題を正確に説明していますが、状況は前の回答で説明したものとは異なり、解決策もそうでした。

私の場合(El Capitan、homebrew経由でインストールされたmysql)、brew update && brew upgradeにより、mysqlパッケージが5.7.10(5.6.xから)にアップグレードされました。

アップグレードにより、libmysqlclient.18.dyliblibmysqlclient.20.dylibに置き換えられましたが、mysql2 gemは依然として前者に依存していました。

私がやった問題を解決するために:gem uninstall mysql2 && gem install mysql2

同様の問題は、異なるhomebrew管理ライブラリで発生する可能性があることに注意してください( たとえば、これに対する私自身の答えを参照してください

50
Giuseppe
Sudo ln -s /usr/local/mysql-5.5.25-osx10.6-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

それは私のために働いた。 MySQLをdmgファイルからインストールしました。

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

私のために働いた。同様のすべてはそうではありませんでした。

16
Greg Benner

MySQLを完全に削除してから新規インストールした後、この問題に遭遇しました。具体的には:

Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.20.dylib

Railsアプリにも触れていませんでした。

mysql2 gemを再インストールすると、この問題は解決しました。

$ gem uninstall mysql2
$ gem install mysql2 -v 0.3.18 # (specifying the version found in my Gemfile.lock)

[MySQL 5.7.10、Rails 4.0.0、Ruby 2.0.0、Mac OS X Yosemite 10.10]

10
sealocal

El CapitanのHomeBrewからインストールされたMySQLを使用している場合、次のようにリンクする必要があります。

Sudo ln -sf /usr/local/Cellar/mysql/5.6.27/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
9
arjunswaj

MavericksのDMGからインストールされたMySql 5.6の場合

Sudo ln -s /usr/local/mysql-5.6.14-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
6
Abhishek Pande

Abhishekからのパッチを確認しますdoes work。

ヨセミテでも機能します。

注:特定のバージョンのmysqlにリンクする代わりに、mysqlがすでにsymlinkを構築しているという事実を使用します。

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

このソリューションは、XcodeおよびC APIで機能します。

4
ingconti

醸造を使用している人のために。 mysqlバージョンを「--force」オプションでリンクするだけです。

brew link mysql56 --force
3
tagaism

これは私のために働く:

ln -s /usr/local/Cellar/mysql/5.6.22/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
2
Son

必要なシンボリックリンクを確認するには(mysqlバージョンとosバージョンに依存):

$ locate libmysqlclient.18.dylib
/usr/local/mysql-5.6.24-osx10.8-x86_64/lib/libmysqlclient.18.dylib

など :

ln -s /usr/local/mysql-5.6.24-osx10.8-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
2
Fraide

私たちが持っているレガシーシステムにRails REE(2.3.4)を使用しています。 El Capitanにアップグレードした後、スクリプト/コンソールを実行するとエラーが発生し、アプリが起動しなくなりました(powを使用)。

$ script/console
Loading development environment (Rails 2.3.4)
/blah-blah/gems/activerecord-2.3.4/lib/active_record/connection_adapters/abstract/connection_specification.rb:76:in establish_connection:RuntimeError: Please install the mysql2 adapter: gem install activerecord-mysql2-adapter (dlopen(/blah-blah/gems/mysql2-0.2.19b4/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /blah-blah/gems/mysql2-0.2.19b4/lib/mysql2/mysql2.bundle
  Reason: image not found - /blah-blah/gems/mysql2-0.2.19b4/lib/mysql2/mysql2.bundle)


上記のこのスレッドから、ターミナルでこのコマンドを発行する必要があると判断しました。
Sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
このコマンドはエラーを生成しました: "ln:/usr/lib/libmysqlclient.18.dylib:Operation not allowed"。私は以前にそのエラーを見たことがありません。

かなり掘り下げた後、次の記事を見つけました。 http://www.macworld.com/article/2986118/security/how-to-modify-system-integrity-protection-in-el-capitan。 html そして指示に従ってSIP(El Capitanの新しいシステム整合性保護)をオフにします。 SIPをオフにして再起動した後、lnコマンドは正常に機能しました。次に、SIPをオフにしました。これですべて問題ありません。私のアプリはpowを使用して再び実行され、スクリプト/コンソールの実行エラーはありません。これがあなたのお役に立てば幸いです。

1
GeezerGeek
gem uninstall -aIx

そして

bundle install

私のために働いた。

1
atomiccoder

MacbrewerでHomebrewを使用している場合:

Sudo ln -s /usr/local/Cellar/[email protected]/5.6.34/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
1
Abhishek

MySQL For python :からMySQLdbをインポートすると、「ライブラリがロードされていません:libmysqlclient.18.dylib」という問題が発生しました。

    Traceback (most recent call last):
  File "test.py", line 3, in <module>
    import MySQLdb
  File "/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/MySQL_python-1.2.4-py3.5-macosx-10.11-x86_64.Egg/MySQLdb/__init__.py", line 19, in <module>
    import _mysql
ImportError: dlopen(/opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/MySQL_python-1.2.4-py3.5-macosx-10.11-x86_64.Egg/_mysql.cpython-35m-darwin.so, 2): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /opt/local/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/MySQL_python-1.2.4-py3.5-macosx-10.11-x86_64.Egg/_mysql.cpython-35m-darwin.so
  Reason: image not found

ソリューションは私のために働く:Mac OS X 10.11.1 Python3.5

Edit ~/.bash_profile:
export PATH="/opt/local/Library/Frameworks/Python.framework/Versions/3.5/bin:$PATH"
export PATH="/opt/local/bin:/opt/local/sbin:$PATH"
export PATH="/usr/local/mysql/bin:$PATH"
export PATH="/usr/local/mysql/lib:$PATH"
Sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
0
Binh Dang

多くのグーグルと上記のすべてを試した後...私の問題を解決した唯一のことはこのコマンドでした:

$install_name_tool -id /usr/local/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib

Macbook ProのOSX 10 El Capitanを使用しています。 Darwin xxxx-MacBook-Pro.local 15.6.0 Darwin Kernelバージョン15.6.0:木6月23 18:25:34 PDT 2016; XXX:xnu-3248.60.10〜1/RELEASE_X86_64 x86_64 Perl:v5.18.2 Mysql:5.6.19

0
Redcloud

コマンドラインからこれを使用してください:

Sudo install_name_tool -id /usr/local/mysql-connector-c-6.1.3-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/local/mysql-connector-c-6.1.3-osx10.7-x86_64/lib/libmysqlclient.18.dylib

マーベリックと常に動作するいくつかのコンピューターで試してみました

0
toxic

そのバンドルファイルのロードに関する私の問題は、悪いシンボリックリンクでした。そのため、リンクを確認し、必要に応じて新しいものと交換してください。その時点ですべてが適切な場所に落ちました。それがどのように起こったのかはわかりませんが、それは事実です。そのような構文エラーが初めて発生したとき。

0
Rich_F

私のために働いた唯一のものは:

Sudo install_name_tool -change libmysqlclient.18.dylib \
/usr/local/mysql-5.6.23-osx10.8-x86_64/lib/libmysqlclient.18.dylib \
/Library/Ruby/Gems/2.0.0/gems/mysql2-0.4.3/lib/mysql2/mysql2.bundle

システムに合うようにmysqlとgemのパスを置き換えます。

0

Bitnami RubyStackを使用していて、同様の問題に遭遇した場合。これを試して

Sudo ln -s /Applications/rubystack-2.0.0-17/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
0
noelvictorino

Rails g modelコマンドを使用していて、このエラーが発生しました:

Library not loaded: libmysqlclient.18.dylib

私はこれを試しましたが、機能しました。私はMavericks 10.9.5を使用していました

Sudo ln -s /usr/local/mysql-5.6.19-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

ありがとう!

現在、Yosemite 10.10.5を使用していますが、同じエラーが発生したため、ターミナルでこのコマンドを実行し、正常に修正されました。

$ Sudo ln -s /usr/local/mysql-5.6.26-osx10.8-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

また、試すことができます:

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

どちらも私にとってはうまく機能します。それが役に立つことを願っています!

0
Alex Ventura