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


119

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でレール用の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

MySQLをhomebrewを介して再インストールすることを推奨する他の投稿を見てきました(鉱山はダウンロード可能なDMGを介してインストールされました)が、他の非Rubyプロジェクト用にいくつかの他のデータベースがすでにあるので、それを望まないでしょう。

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


これはこれの複製でしょうか?stackoverflow.com/questions/4546698/...
gmile

確かに。自分の質問を削除できませんか?dupとして終了するよう投票しました。
ジョージアームホールド

回答:


313

解決策はかなり簡単です。〜/ .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

16
シンボリックリンクは私のために働いた(マウンテンライオンにアップグレードした後)。ありがとう!
siannopollo 2012年

5
Symlinkは、RubyMineの下からレールを実行する場合など、.bash_profile実際には適用されない場合に特にそうです。
maksimov 2013年

2
DYLD_LIBRARY_PATHを.bash_profileに追加しましたが、「mysql2」gemをアンインストールしてから再インストールする必要もありました。例: 'gem uninstall mysql2 && gem install mysql2'
brendan

73
10.11のためにここに来た人のために、あなたはへのシンボリックリンクすることはできませんusr/libもはやなく、へのシンボリックリンクusr/local/libの意志の仕事:sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
JonathanSimmons

2
@JonathanSimmons-あなたは私の髪の残りを抜くのを助けてくれた。元のシンボリックリンクの回答がOS X 10.11.5では機能せず、単に「ln:/usr/lib/libmysqlclient.18.dylib:Operation not allowed」というエラーが発生するだけです。その日のために働く...ありがとう!
コリンアダムス

125

エルキャピタンでは 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サーバーは再び正常に動作しています。


2
アレックスの答えのすべてを必要としませんでした。1つのシンボリックリンクでうまくいきました。
gitb

「connect」:ソケット「/tmp/mysql.sock」を介してローカルMySQLサーバーに接続できません(2)(Mysql2 :: Error)」
Josh Hunter

1
@JoshHunterこれは別の問題だと思います。ここにスレッドがあります。stackoverflow.com/ questions / 18449050 /… MySQLサーバーが実行されていない可能性もあります。
TinMonkey、2015年

ええ、サーバーは稼働していませんでした...これで修正されました。sudo /usr/local/mysql/support-files/mysql.server start
Josh Hunter

62

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

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

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

私がした問題を修正するには: gem uninstall mysql2 && gem install mysql2

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


すごい !私のmysqlを5.7にアップグレードしました...この問題に直面しました.....した次の手順1. gem uninstall mysql2>選択したオプション3 2. gem install mysql2 3.これをプロジェクトのgemfileに追加しました---> gem 'mysql2' 、 '〜> 0.3.21' 4.バンドルのインストール
Udit Kapahi

10
ぜひ最初にお試しください! それが機能する場合、他の回避策のいずれかを使用してシステムをジャンクアップすることを回避できます。時には、魔法のシンボリックリンクなどに依存する必要がありますが、システムがますます壊れやすくなります。(それが機能しない場合、害はなく、元に戻すことはできません。)
トムウィルソン

私も働いた。問題はmysql w / homebrewのインストールから公式インストーラーに移動したことです。
ゼネティクス2018年

1
任意のPythonのユーザーのために、ここで取得し、pip uninstall mysqlclientそしてpip install mysqlclientまた、働いていました。
Peter Dolan 2018

26
sudo ln -s /usr/local/mysql-5.5.25-osx10.6-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

それでうまくいきました。MySQLをdmgファイルからインストールしました。


これはMac OS Xで動作しました-dmgファイルからインストールされたMySQLを使用するヨセミテ。ジョセフに感謝します。
racl101 2015

4
操作は許可されていません(明らかにsudoで)私のSOバージョンはEl
capitanです

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

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


これはRubyMineのソリューションです。
ジャスティン

13

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

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

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

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

$ 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]


9

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

sudo ln -sf /usr/local/Cellar/mysql/5.6.27/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib

6

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

4

私はAbhishekからのパッチを確認します機能ます。

ヨセミテでも使えます。

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

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

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


3

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

brew link mysql56 --force

これは、ln -sオプションを使用するのではなく、ライブラリファイルをリンクする方法です。brew link mysql@5.7 --forceを使用して更新バージョン
Vahid Kowsari

ありがとう。しましたbrew link mysql@5.7 --force。完璧に働きました。
Aye Mon Chit

2

必要なシンボリックリンクを確認するには(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

これは私にとってはうまくいきます:

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

...私のために変化されてしまったln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
treejanitor

1

私はレガシーシステムに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

Mac SierraでHomebrewを使用している場合は、次のようにします。

sudo ln -s /usr/local/Cellar/mysql@5.6/5.6.34/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib


1

これでうまくいきました。私がしなければならなかったすべてはmysql2 gemをアンインストールし、以下のコマンドを使用してそれを再度インストールすることです

gem uninstall mysql2
gem install mysql2 -v '0.3.18' -- --with-mysql-config=/usr/local/Cellar/mysql@5.7/5.7.28/bin/mysql_config

1

私はMac OSを使用していますが、mysqlとMAMPをすべてアンインストール/削除した後でも、このバグに悩まされていました。以前、私はインストールbrew install mysqlして使用しましたMAMP。ソフトリンクの追加はうまくいきませんでした。

既存のmysqlをすべて削除することによってのみ解決されました。その後、ここからのMySQLを通じてMySQLをインストールします


0

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

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

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

sudo ln -s /Applications/rubystack-2.0.0-17/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

0

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


0

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

ありがとう!

現在、ヨセミテ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

python3のMySQLから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

@MSU_Bulldogもちろん質問に答えます。新しい情報も提供します。回答にここにそれらをもたらしたエラーが含まれているからといって、それらが提供するソリューションにも価値がないという意味ではありません。
Artjom B.

0

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

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とgemsのパスをシステムに合わせて置き換えます。


0

たくさんグーグルして上記すべてを試した後...私の問題を解決したのはこのコマンドだけでした:

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

MacbookプロのOSX 10 El Capitanを使用しています。Darwin xxxx-MacBook-Pro.local 15.6.0 Darwin Kernelバージョン15.6.0:Thu Jun 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

ありがとう。Homebrewのアップグレードにより、私のMacでRailsアプリに問題が発生しました。ソースからMySQL(5.7)を再インストールした後、これを実行する必要がありました

sudo ln -s /usr/local/mysql-5.7.28-macos10.14-x86_64/lib/libmysqlclient.20.dylib /usr/lib/libmysqlclient.20bdylib

上記で読んだ内容と私のGemfileに基づいています

gem 'mysql2', '0.5.3'

そして、database.yml

adapter: mysql2

0

この質問にはすでに多くの回答があり、特にこれはhttps://stackoverflow.com/a/10847618/5515861です。いくつかメモを追加したいだけです。Macを使用している場合、MySQLのインストール方法はわかりませんが、最初に調査する必要があるのは、MySQLインストールがどこにあるかです。私の場合、MySQLはbrewバージョンを使用してインストールされて5.7おり、場所は/usr/local/opt/mysql@5.7/なので、以下をmyに追加します~/.zshrc

MYSQL=/usr/local/opt/mysql@5.7/bin/
MYSQL_LIB=/usr/local/opt/mysql@5.7/lib/
export PATH=$PATH:$MYSQL
export DYLD_LIBRARY_PATH=$MYSQL_LIB:$DYLD_LIBRARY_PATH

問題を修正してください

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