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


119

저는 루비 (및 레일)로 막 시작했습니다. 나는 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를 찾는 방법을 알려주는 가장 좋은 방법은 무엇입니까?


이것의 중복 일 수 있습니까? stackoverflow.com/questions/4546698/…
gmile

과연. 내 질문을 삭제할 수 없습니까? dup으로 마감하도록 투표했습니다.
George Armhold

답변:


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
Symlink는 저에게 효과적이었습니다 (Mountain Lion으로 업그레이드 한 후). 감사!
siannopollo

5
Symlink는 특히 .bash_profile실제로 적용되지 않는 RubyMine 아래에서 레일을 실행하는 경우에이를 수행합니다 .
maksimov 2013 년

2
DYLD_LIBRARY_PATH를 .bash_profile에 추가했지만 'mysql2'gem을 제거한 다음 다시 설치해야했습니다. 같은 '보석 제거 mysql2 && 보석 mysql2 설치'
브랜든

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"오류가 발생합니다. 이제 모든 것이 작동하며 마침내 시작할 수 있습니다. 하루를 위해 일하십시오 ... 감사합니다!
Colin Adams

125

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


2
Alex의 대답이 모두 필요하지는 않았습니다. 하나의 심볼릭 링크가 트릭을 수행했습니다.
gitb

나는 이것을했고 : "connect ': Ca n't connect to local MySQL server through socket'/tmp/mysql.sock '(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 upgrade인해 mysql 패키지가 5.6.x에서 5.7.10으로 업그레이드되었습니다.

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

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

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


좋아요! mysql을 5.7로 업그레이드했습니다 ...이 문제에 직면했습니다 ..... 수행 한 단계 1. gem uninstall mysql2> selected option 3 2. gem install mysql2 3. 이것을 프로젝트의 gemfile ---> gem 'mysql2'에 추가했습니다. , '~>
0.3.21'4

10
나는 모두가 이것을 먼저 시도하는 것이 좋습니다! 작동한다면 다른 해결 방법을 사용하여 시스템을 엉망으로 만드는 것을 피할 수 있습니다. 때로는 마법의 심볼릭 링크 등에 의존해야하지만 시스템이 점점 더 취약 해집니다. (그렇지 않은 작업을 수행하는 경우에는 피해가 완료 및 취소에 아무것도 없습니다.)
톰 윌슨

나를 위해 일했습니다. 문제는 homebrew와 함께 mysql을 설치하는 것에서 공식 설치 프로그램으로 옮겼습니다.
xenetics

1
어떤 파이썬 사용자의 경우 여기에 도착, pip uninstall mysqlclientpip install mysqlclient도했다.
Peter Dolan

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을 설치했습니다.


이것은 dmg 파일에서 설치된 MySQL과 함께 Mac OS X-Yosemite에서 작동했습니다. 감사합니다 조셉.
racl101 2015 년

4
작동이되지 허용 (분명히와 sudo를) 내 SO 버전은 엘 캐피 탄입니다
이그나시오 chiazzo

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

나를 위해 일했습니다. 비슷한 것들은 모두 그렇지 않았습니다.


이것이 RubyMine의 솔루션입니다.
Justin

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이 이미 심볼릭 링크를 구축했다는 사실을 사용하십시오.

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

이 솔루션은 Xcode 및 C API에서 작동합니다.


3

양조주를 사용하는 사람들을 위해. "--force"옵션을 사용하여 mysql 버전을 연결하면됩니다.

brew link mysql56 --force

이것은 ln -s 옵션을 사용하는 대신 라이브러리 파일을 링크하는 방법입니다. 업데이트 된 버전에 대한 양조 링크 mysql@5.7의 --force를 사용
바히드 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


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

감사!

이제 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

python3 에서 MySQLdb를 가져올 때 "Library not loaded : 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 및 gem의 경로를 바꿉니다.


0

많은 인터넷 검색과 위의 모든 것을 시도한 후 ... 내 문제를 해결 한 유일한 방법은 다음 명령이었습니다.

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

맥북 프로 OSX 10 El Capitan을 사용하고 있습니다. Darwin xxxx-MacBook-Pro.local 15.6.0 Darwin Kernel 버전 15.6.0 : Thu June 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 업그레이드로 인해 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

0

이 질문, 특히 https://stackoverflow.com/a/10847618/5515861 에 대한 많은 답변이 이미 있습니다 . 몇 가지 메모 만 추가하고 싶습니다. Mac을 사용하는 경우 MySQL을 설치하는 방법을 모르지만 가장 먼저 조사해야 할 것은 MySQL 설치 위치입니다. 나를 위해 MySQL은 brewfor version을 사용하여 설치 5.7되고 위치는 /usr/local/opt/mysql@5.7/이므로 내 ~/.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.