[mysql] OSX의 rails + MySQL : 라이브러리가로드되지 않음 : libmysqlclient.18.dylib

저는 루비 (및 레일)로 막 시작했습니다. 나는 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

homebrew를 통해 MySQL을 다시 설치하도록 권장하는 다른 게시물을 보았습니다 (내는 다운로드 가능한 DMG를 통해 설치되었습니다).

실제로 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


답변

El Capitan에서 나는 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 서버가 다시 정상적으로 실행되고 있습니다.


답변

이 질문의 제목은 내가 만난 문제를 정확하게 설명하지만 상황은 이전 답변에서 설명한 것과 다르므로 해결책도 마찬가지입니다.

필자의 경우 (El Capitan, homebrew를 통해 설치된 mysql)로 brew update && brew upgrade인해 mysql 패키지가 5.6.x에서 5.7.10으로 업그레이드되었습니다.

업그레이드 libmysqlclient.18.dylib는으로 대체 libmysqlclient.20.dylib되었지만 mysql2gem은 여전히 ​​전자에 의존하고있었습니다.

내가 한 문제를 해결하기 위해 : gem uninstall mysql2 && gem install mysql2

다른 홈브류 관리 라이브러리에서도 유사한 문제가 발생할 수 있습니다 (예 : 이에 대한 내 답변 참조 ).


답변

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

그것은 나를 위해 일했습니다. dmg 파일에서 MySQL을 설치했습니다.


답변

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 앱도 건드리지 않았습니다.

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]


답변

El Capitan의 HomeBrew에서 설치된 MySQL을 사용하는 경우 다음과 같이 연결해야합니다.

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