저는 루비 (및 레일)로 막 시작했습니다. 나는 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
되었지만 mysql2
gem은 여전히 전자에 의존하고있었습니다.
내가 한 문제를 해결하기 위해 : 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 앱도 건드리지 않았습니다.
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