라이브러리가로드되지 않음 : mysql2 gem을 사용하여 OS X 10.6에서 'rails server'를 실행하려고 할 때 libmysqlclient.16.dylib 오류


206

나는 한동안 이것으로 어려움을 겪고있다.

Snow Leopard 시스템에 Rails 3, gem, mysql을 설치했습니다. 첫 번째 프로젝트를 만들고 실행하려고 할 때까지 모든 것이 잘 진행되었습니다.

rails server

이것을 실행하면 다음을 얻습니다.

jontybrook$ rails server
/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle: dlopen(/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.16.dylib (LoadError)
  Referenced from: /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
  Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle
    from /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2.rb:7
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:62:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:62:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:51:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler/runtime.rb:51:in `require'
    from /Library/Ruby/Gems/1.8/gems/bundler-1.0.7/lib/bundler.rb:112:in `require'
    from /Users/jontybrook/Dropbox/CODING/simple_cms/config/application.rb:7
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:28:in `require'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:28
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:27:in `tap'
    from /Library/Ruby/Gems/1.8/gems/railties-3.0.3/lib/rails/commands.rb:27
    from script/rails:6:in `require'
    from script/rails:6
jontybrook$ 

내가 알 수있는 한 mysql2 gem에 문제가 있습니다. MySQL이 정상적으로 실행되는 것 같고 Gemfile이 mysql2를 참조하고 database.yml 파일도 정상적으로 보입니다.

오류 언급

Reason: image not found - /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

그리고 아직

jontybrook$ cd /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2
jontybrook$ ls
client.rb   em.rb       error.rb      mysql2.bundle result.rb

MySQL2. 번들이 있습니까!?

오래된 mysql gem을 사용하면 WEBrick이 정상적으로 부팅됩니다. 그러나 이상적이지 않습니까?

나는 구글이 줄 수있는 모든 것을 시도했다! 도움을 주시면 감사하겠습니다.

답변:


393

나는이 답변 중 어느 것도 나를 위해 일할 수 없었지만, 이것이 나를 위해 일하는 데 사용한 명령입니다. 이렇게하면 mysql을 업데이트 할 때마다 install_name_tool을 사용할 필요가 없습니다.

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

11
이것이 그 문제를 해결하는 가장 간단하고 올바른 방법입니다.
Voldy

2
이것에 감사합니다. 위에 표시된 답변은 한 사이트에서만 작동했지만 영구적으로 작동했습니다. 모타.
fregas

12
무슨 일이 일어나고 있는지 궁금한 사람들을 위해이 명령은 두 번째 위치에서 첫 번째 위치로 심볼릭 링크를 만듭니다. gem이에서 MySQL 클라이언트 라이브러리를 찾으면 /usr/lib해당 링크는 실제로 설치된 위치로 확인됩니다. OS X에서는 일반적 /usr/local/mysql/lib으로이 명령이 연결되는 위치에 있습니다. lib가 다른 위치에 설치된 경우이 명령을 조정해야합니다. locate libmysqlclient.18.dylib뒤에 첫 번째 인수의 결과를 입력 하고 대체하십시오 -s.
Siobhán

1
@Sean D., libmysqlclient.18.dylib 찾기를 실행하면 WARNING: The locate database (/var/db/locate.database) does not exist. To create the database, run the following command: sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist Please be aware that the database can take some time to generate; once the database has been created, this message will no longer appear.무엇이 잘못 되었습니까?
GiH

1
@GiH 당신은 단지 당신에게 ( sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist) 명령을 실행해야합니다 . 그러면 하드 드라이브 색인 생성 프로세스가 시작 locate되어 향후 명령이 작동하게됩니다. 그러나 대부분의 경우에는 그렇게 할 필요가 없으며 luvlss에서 제공 한 명령을 그대로 사용할 수 있다고 생각 합니다.
Siobhán

93

나는 이것을 결국 해결했다!

RVM에서 Ruby and Rails를 다시 설치했습니다. Ruby 버전 1.9.2-p136을 사용하고 있습니다.

rvm에서 다시 설치 한 후에도이 오류가 계속 발생했습니다.

결국 그것을 해결 한 마술 명령은 다음과 같습니다.

sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql/lib/libmysqlclient.16.dylib ~/.rvm/gems/ruby-1.9.2-p136/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

이것이 다른 누군가를 돕기를 바랍니다!


1
이것은 어떻게 든 mysql의 권한을 재설정했으며 이제는 mysql 문서에 설명 된 파일을 사용하여 비밀번호를 재설정 한 후에도 로그인 할 수 없습니다.
Coderama

2
고마워, 이것은 나를 위해 그것을했다. 그리고 같은 문제를 가진 다른 사람들의 경우, rvm을 사용하고 sudo를 건너 뛰면 권한이 변경 될 수 있습니다.
DanneManne

2
마법 명령은 RVM을 사용하지 않는 경우에도 작동 mysql2-0.2.6/lib/mysql2/mysql2.bundle합니다. 보석이 설치되는 곳 을 가리 키도록 마지막 인수를 변경하십시오 .
Tobias Cohen

2
정말 고맙습니다. 지구상에서 어떻게 알아 냈습니까?
Derek

7
감사합니다! : 나는 루비 1.9.2-P180을 RVM 1.6.4을 실행하는 내 맥 OS X 라이온 약간 다른 명령, mysql2 보석 0.3.10 필요 sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/rvm/gems/ruby-1.9.2-p180/gems/mysql2-0.3.10/lib/mysql2/mysql2.bundle
랜디 EPPINGER

88

이 수정 프로그램은 저에게 매우 효과적이었습니다.

~ / .profile에 다음을 추가하십시오.

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

http://www.rickwargo.com/2010/12/16/installing-mysql-5-5-on-os-x-10-6-snow-leopard-and-rails-3/


1
대단히 감사합니다. 이것은 나를 위해 일했습니다. (VM OS x 10.6.6i, 루비 1.9.3p327), RVM 사용
datnt

확인했습니다. 그게 전부 내가 OSX 매버릭 10.9.1에 추가 할 수 있었다
Artur79

40

나를 위해 이것은 단지 mysql을 업그레이드했지만 mysql2 gem을 업데이트하지 않았기 때문입니다-gem을 다시 설치하면 문제가 해결됩니다 ...

gem pristine mysql2


선택한 답변이어야합니다.
El Guapo

26

나는 같은 문제가 있습니다. libmysqlclient 라이브러리를 찾을 수없는 것 같습니다. 나를 위해 일한 임시 수정 사항은 다음과 같습니다.

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib/

구성이로드 경로를 지정하는 위치 또는 설정된 경로를 확실하지 않지만 mysql 설치가 그 경로에없는 것처럼 보입니다. 더 영구적 인 해결책을 찾으면 다시 게시하겠습니다.

편집 : 사실 수정보다 정확하게 문제를 해결하기 위해 나타납니다.


24

에 아래를 추가하십시오 ~/.bash_profile:

export DYLD_LIBRARY_PATH=/usr/local/mysql/lib:$DYLD_LIBRARY_PATH

이것은 나를 위해 일했다


네, 1.9.3-p448에서 작동합니다. 받아 들여지는 대답이 아니라는 것이 부끄러운 일입니다.
andreimarinescu

17

이 작업을 수행 할 때 OSX El Capitan 업데이트에서 :

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

그것은 같은 오류를 던진다

ln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted

이를 피하기 위해 먼저 libmysqlclient.18.dylib명령을 사용하여 찾을 수 있습니다.

User$ locate libmysqlclient.18.dylib

내 경우에는 돌아왔다 /usr/local/mysql-5.5.24-osx10.5-x86_64/lib/libmysqlclient.18.dylib

따라서 대신에 usr/lib/다음 usr/local/lib/과 같은 심볼릭 링크를 만들 것입니다 .

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

자세한 내용은 https://forums.developer.apple.com/thread/7935


1
엘 캐피 탄 (El Capitan)에서 마지막 행은 다음과 같습니다.sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
Justin Justin

누군가 도와 줘서 다행입니다. : D
Sony Mathew

이것은 대상 링크가 /usr/local/lib폴더 에 있어야하는 elcapitan에 대한 정답입니다
Arnold Roa

13

다음 줄이 나를 위해 작동합니다. Mac 10.7.2를 사용하고 있습니다.

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


1
이것이 내 문제를 해결 한 것입니다. 감사!
저스틴 Bozonier

11

이 문제가 발생했습니다. 내가해야 할 일은 mysql2 gem을 제거하고 다시 설치하는 것입니다. 이것이 다른 사람들에게 효과가 있기를 바랍니다.


1
Mavericks를 실행하는 내 컴퓨터에서 gem uninstall mysql2로 All versions프롬프트 된 모든 버전의 mysql2 gem을 제거했습니다 . 그런 다음 brew upgrade mysql을 실행 한 다음 mysql2를 gem 설치하십시오.
Martin Streicher

4

이것이 나를 위해 일한 방법입니다.

아래 명령을 실행했습니다.
sudo install_name_tool -change libmysqlclient.18.dylib /usr/local/mysql/lib/libmysqlclient.18.dylib ~ / .rvm / gems / ruby-1.9.2-p180 / gems / mysql2-0.2.7 명령을 실행했습니다. /lib/mysql2/mysql2.bundle

내 환경 :
$ rails -v Rails 3.0.6

$ mysql-버전
readline 5.1을 사용하는 osx10.6 (i386) 용 mysql 버전 14.14 Distrib 5.5.11

$ 루비 -v
ruby 1.9.2p180 (2011-02-18 개정판 30909) [x86_64-darwin10.7.0]

이것이 누군가를 돕기를 바랍니다.


3

고마워, 오 가포! 해당 별칭을 내 보내면 나에게 도움이되었고 링크를 따라 갔으며 mysql2.bundle은 /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle에 있습니다. ~ / .rvm에서 하나가 아닌 해당 번들을 수정하도록 install_name_tool을 조정하고 수행 해야하는 방식으로 작동하도록했습니다.

그래서 지금:

   $ otool -L /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle 
    /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle:
        /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/libruby.1.dylib (compatibility version 1.8.0, current version 1.8.7)
        /usr/local/mysql/lib/libmysqlclient.16.dylib (compatibility version 16.0.0, current version 16.0.0)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)

3

안녕하세요, Fredy Andersen 의 추천 링크 에서 저를 위해 일했습니다.

sudo install_name_tool -change libmysqlclient.16.dylib /usr/local/mysql /lib/libmysqlclient.16.dylib /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

명령에서 내 버전의 mysql로 ​​변경해야했습니다. 감사합니다.


3

현재 프로젝트의 gemset을 삭제하고 다시 만들고 번들 설치를 다시 실행하여이 문제를 해결했습니다. 최신 버전의 mysql을 설치하여 문제가 발생한 것 같습니다.


3

Django로 작업 할 때이 문제가 있었고 brew많은 오픈 소스 프로그램 brew을 설치 하는 데 사용 했으며 설치 하는 데 다음을 수행 해야했습니다 mysql.

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

라이브러리 버전으로 교체하십시오!


3

bundle install mysql --force나를 도와 주었다. 의 결과로 사라진 종속성을 다시 설치했습니다 brew uninstall mysql.


Unknown switches '--force'
Arnold Roa

2

Jonty, 나도 이것으로 고투하고있다.

여기에 단서가 있다고 생각합니다.

otool -L /Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle

/Library/Ruby/Gems/1.8/gems/mysql2-0.2.6/lib/mysql2/mysql2.bundle:
    /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/libruby.1.dylib (compatibility version 1.8.0, current version 1.8.7)
    libmysqlclient.16.dylib (compatibility version 16.0.0, current version 16.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 125.2.1)

dylib로가는 길은 짧은 편입니다.

gem 설치 지침이 dylib 경로를 벗어나는 위치를 찾으려고하지만 보석을 직접 만들지 않았으므로 느리게 진행됩니다.

더 많이 찾으면 더 게시하겠습니다!


2

며칠 전에 똑같은 문제가있었습니다. 나는 결국 그것을 해결했다. 잘 모르겠지만 어쨌든 내가 한 일을 알려 드리겠습니다. 어쩌면 당신을 도울 것입니다.

RVM을 다운로드하여 시작했습니다. 아직 사용하지 않는 경우 사용하는 것이 좋습니다. 기본적으로 Ruby, RoR 및 RubyGems를 새로 설치하기위한 샌드 박스를 만듭니다. 실제로 여러 설치를 동시에 동시에 수행 할 수 있습니다. 그것은 매력처럼 작동합니다.

이것이 왜 유용한가요? OS X의 기본 Ruby 설치를 망쳐서는 안되기 때문에 시스템은 여기에 의존합니다. 기본 Ruby 및 RoR 설치 만 그대로두고 자체 개발에 사용할 수있는 RVM을 사용하여 새로 설치하는 것이 가장 좋습니다.

별도의 Ruby 설치를 만든 후에는 RoR, RubyGems 및 mysql을 설치했는데 제대로 작동했습니다. 내가 취한 정확한 단계는 Rails, MySQL 등의 설치 문제를 참조하십시오 .

다시 : 나는 이것이 당신의 문제를 해결할 것이라고 확신하지 못합니다. 그러나 그것은 나를 위해 속임수를 썼으며, 어떤 경우에도 RVM을 사용하는 것이 좋습니다.


2

나는 여전히 위의 솔루션으로 TextMate 용 Rails 플러그인과 함께 작동하지 않는다는 것을 알았습니다. 비슷한 오류가 발생했습니다 (데이터베이스 스키마를 검색 할 때).

그래서 열린 터미널은 다음과 같습니다.

cd /usr/local/lib
sudo ln -s ../mysql-5.5.8-osx10.6-x86_64/lib/libmysqlclient.16.dylib .

mysql-5.5.8-osx10.6-x86_64를 교체하십시오. 자신의 경로 (또는 MySQL의)와 함께.

이것은 lib에 대한 심볼 링크를 만들고, 이제 레일은 ruby-on-rails-tmbundle 과 같은 TextMate 플러그인과 마찬가지로 명령 행에서 실행됩니다 .

명확하게 : 레일 서버를 시작할 때 발생하는 오류도 수정합니다.


2

이것은 일반적으로 mysql을 업그레이드 할 때 발생합니다. 이전 mysql 라이브러리에서 빌드 된 설치된 mysql2 gem은 새 라이브러리에서 작동하지 않습니다. 다시 설치하기 만하면됩니다.

로 mysql2를 제거하십시오 gem uninstall mysql2. 그런 다음gem install mysql2


1

프로젝트 폴더 containsg에 .rvmrc 파일을 만들어서 해결했습니다.

rvm use <yourrubie>

그런 다음 프로젝트 경로를 입력하십시오.

cd ~/myprojectpath

그런 다음 실행

bundle install

1

내 luvlss 명령 버전 :

맥 OSX 10.10.5

MySQL 5.6.27

승객 5.0.21

sudo ln -s /usr/local/mysql-5.6.27-osx10.8-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

내가했던 것처럼 많은 다른 링크를 시도한다면 다음을 사용하여 정리하십시오.

sudo unlink /usr/lib/libmysqlclient.18.dylib


1

터미널을 열고 다음을 실행하십시오.

export PATH=$PATH:/usr/local/mysql/bin

작동해야합니다.


1
이것은 일을했다, 감사합니다 !!! Visual Studio Code에서 Django를 실행하는 데 문제가있었습니다. virtualenv에 mysqlclient를 설치했는지 여부에 관계없이 오류가 계속 발생합니다.
Irshu

0

OSX를 사용하고 brew를 사용하여 mysql을 설치 한 경우 다음을 수행 할 수 있습니다.

brew link mysql

버전에 문제가있는 경우 (보석이 5.6.25 인 동안 mysql 5.7을 실행하고 있음)

brew unlink mysql
brew switch mysql 5.6.25

0

나를 위해 수동으로 mysql을 제거해야했습니다.

brew uninstall mysql
rm -rf /usr/local/var/mysql
brew install mysql
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.