122

私は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を再インストールすることを推奨する他の投稿を見たことがあります(私のものはダウンロード可能なDMG経由でインストールされました)が、他の非rubyプロジェクト用にすでにいくつかの他のデータベースがあるので、そうしないことを望みます。

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

4

27 に答える 27

317

解決策は非常に簡単です。〜/ .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
于 2012-06-01T09:19:52.903 に答える
126

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

El Capitan/usr/lib/ではフラグが制限されており、セキュリティを無効にしないと書き込むことができないため、/usr/local/lib代わりにリンクを挿入します。

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

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

于 2015-09-30T21:00:59.803 に答える
68

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

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

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

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

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

于 2016-01-12T06:39:45.963 に答える
26
sudo ln -s /usr/local/mysql-5.5.25-osx10.6-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

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

于 2012-10-17T07:00:16.653 に答える
16
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

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

于 2013-07-03T13:02:11.373 に答える
14

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]

于 2016-02-24T20:52:24.043 に答える
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
于 2015-10-10T09:50:53.487 に答える
6

MavericksのDMGからインストールされたMySql5.6の場合

sudo ln -s /usr/local/mysql-5.6.14-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
于 2013-11-13T20:13:58.267 に答える
4

Abhishekからのパッチが機能することを確認ます。

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

注:mysqlの特定のバージョンにリンクする代わりに、mysqlがすでに構築されているシンボリックリンクを使用してください。

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

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

于 2014-07-09T15:22:49.520 に答える
3

どのシンボリックリンクが必要かを確認するには(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
于 2015-05-31T13:44:51.077 に答える
2

これは私のために働きます:

ln -s /usr/local/Cellar/mysql/5.6.22/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
于 2016-05-12T20:53:55.137 に答える
2

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

brew link mysql56 --force
于 2017-10-14T15:27:30.040 に答える
2

記録のためだけに:$ gem pristine mysql2私のためにこれを解決します。

于 2020-12-04T06:47:59.720 に答える
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:操作は許可されていません」。私はこれまでそのエラーを見たことがありません。

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

于 2015-12-09T15:03:50.983 に答える
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
于 2017-02-27T11:17:22.233 に答える
1
gem uninstall -aIx

bundle install

私のために働いた。

于 2017-04-29T21:29:31.353 に答える
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
于 2019-10-31T10:00:39.197 に答える
1

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

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

于 2019-12-22T02:36:50.147 に答える
1

この質問に対する答えはすでにたくさんあります。特にこれはhttps://stackoverflow.com/a/10847618/5515861です。いくつかメモを追加したいだけです。Macを使用している場合、MySQLをどのようにインストールするかはわかりませんが、最初に調査するのは、MySQLのインストールがどこにあるかです。私の場合、MySQLはbrewforバージョンを使用してインストールされ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

問題を解決してください

于 2020-06-10T02:59:39.253 に答える
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

異端者が常に動作するいくつかのコンピュータで試してみました

于 2014-01-18T09:16:43.167 に答える
0

Bitnami RubyStackを使用していて、同様の問題が発生した場合。これを試してみてください

sudo ln -s /Applications/rubystack-2.0.0-17/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
于 2014-08-07T09:35:56.157 に答える
0

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

于 2015-08-18T16:10:06.270 に答える
0

rails g modelコマンドを使用していたところ、次のエラーが発生しました。

Library not loaded: libmysqlclient.18.dylib

私はこれを試しました、そしてそれは私のために機能しました。私はマーベリックス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

どちらも私には問題なく機能します。お役に立てば幸いです。

于 2015-08-30T20:24:31.533 に答える
0

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

    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
于 2015-12-01T16:56:17.933 に答える
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のパスを置き換えます。

于 2016-02-27T17:10:13.957 に答える
0

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

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

私はmacbookpro、OSX 10ElCapitanを使用しています。Darwin xxxx-MacBook-Pro.local 15.6.0 Darwinカーネルバージョン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

于 2016-08-28T15:04:13.240 に答える
0

ありがとう。自作のアップグレードにより、私のRailsアプリでMacに問題が発生しました。ソースから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
于 2019-12-30T16:16:31.263 に答える