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/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
エルキャピタンで私は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サーバーは再び正常に動作します。
この質問のタイトルは、私が遭遇した問題を正確に説明していますが、状況は前の回答で説明したものとは異なり、解決策もそうでした。
私の場合(El Capitan、homebrew経由でインストールされたmysql)、brew update && brew upgrade
により、mysqlパッケージが5.7.10(5.6.xから)にアップグレードされました。
アップグレードにより、libmysqlclient.18.dylib
はlibmysqlclient.20.dylib
に置き換えられましたが、mysql2
gemは依然として前者に依存していました。
私がやった問題を解決するために:gem uninstall mysql2 && gem install mysql2
同様の問題は、異なるhomebrew管理ライブラリで発生する可能性があることに注意してください( たとえば、これに対する私自身の答えを参照してください )
Sudo ln -s /usr/local/mysql-5.5.25-osx10.6-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
それは私のために働いた。 MySQLをdmgファイルからインストールしました。
Sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
私のために働いた。同様のすべてはそうではありませんでした。
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]
El CapitanのHomeBrewからインストールされたMySQLを使用している場合、次のようにリンクする必要があります。
Sudo ln -sf /usr/local/Cellar/mysql/5.6.27/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
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
Abhishekからのパッチを確認しますdoes work。
ヨセミテでも機能します。
注:特定のバージョンのmysqlにリンクする代わりに、mysqlがすでにsymlinkを構築しているという事実を使用します。
Sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
このソリューションは、XcodeおよびC APIで機能します。
醸造を使用している人のために。 mysqlバージョンを「--force」オプションでリンクするだけです。
brew link mysql56 --force
これは私のために働く:
ln -s /usr/local/Cellar/mysql/5.6.22/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
必要なシンボリックリンクを確認するには(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
私たちが持っているレガシーシステムに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を使用して再び実行され、スクリプト/コンソールの実行エラーはありません。これがあなたのお役に立てば幸いです。
gem uninstall -aIx
そして
bundle install
私のために働いた。
MacbrewerでHomebrewを使用している場合:
Sudo ln -s /usr/local/Cellar/[email protected]/5.6.34/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
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
多くのグーグルと上記のすべてを試した後...私の問題を解決した唯一のことはこのコマンドでした:
$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
コマンドラインからこれを使用してください:
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
マーベリックと常に動作するいくつかのコンピューターで試してみました
そのバンドルファイルのロードに関する私の問題は、悪いシンボリックリンクでした。そのため、リンクを確認し、必要に応じて新しいものと交換してください。その時点ですべてが適切な場所に落ちました。それがどのように起こったのかはわかりませんが、それは事実です。そのような構文エラーが初めて発生したとき。
私のために働いた唯一のものは:
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のパスを置き換えます。
Bitnami RubyStackを使用していて、同様の問題に遭遇した場合。これを試して
Sudo ln -s /Applications/rubystack-2.0.0-17/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
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
どちらも私にとってはうまく機能します。それが役に立つことを願っています!