rails + MySQL на OSX: библиотека не загружена: libmysqlclient.18.dylib
Я только начинаю с Ruby (и rails). Я сделал настройку в соответствии с http://ruby.railstutorial.org/ruby-on-rails-tutorial-book#sec:ruby драгоценные камни, используя rvm. У меня все хорошо работает с SQLite.
теперь я хотел бы попробовать конвертировать вещи в MySQL, так как это то, что я делаю большую часть своей разработки. В моем Gemfile Я заменил sqlite на mysql2:
group :development, :test do
# gem 'sqlite3', '1.3.5'
gem 'mysql2'
gem 'rspec-rails', '2.9.0'
end
но когда я пытаюсь создать БД для rails в MySQL I получить:
$ 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
Я видел другие публикации, рекомендующие переустановить MySQL через homebrew (мой был установлен через загружаемый DMG), но я бы предпочел не делать этого, поскольку у меня уже есть несколько других баз данных для других проектов, отличных от ruby.
у меня действительно есть файл, который ищет Rails; он установлен в /usr/local/mysql/lib/libmysqlclient.18.dylib. Каков лучший способ сказать Rails, как его найти?
22 ответов:
решение довольно простое; добавьте путь к библиотеке в свой~/.bash_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В Эль-Капитан
/usr/lib/теперь имеет ограниченный флаг и не может быть записан без отключения безопасности, поэтому я просто помещаю ссылку в .sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylibRails сервер снова работает нормально.
хотя название этого вопроса точно описывает проблему, с которой я столкнулся, обстоятельства отличаются от тех, которые описаны в предыдущих ответах, и поэтому было решение.
в моем случае (El Capitan, mysql установлен через homebrew), a
brew update && brew upgradeвызвал обновление пакета mysql до 5.7.10 (с 5.6.икс.)обновление причинил
libmysqlclient.18.dylibзаменитьlibmysqlclient.20.dylib, аmysql2джем все еще полагался на первое.исправить проблема я сделал:
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это сработало для меня. Я установил MySQL из файла dmg.
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylibработал для меня. Все подобные не сделали.
Если вы используете MySQL, установленный из HomeBrew в El Capitan, то вы должны связать его следующим образом:
sudo ln -sf /usr/local/Cellar/mysql/5.6.27/lib/libmysqlclient.18.dylib /usr/local/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]
для MySql 5.6 установлен из DMG на Mavericks
sudo ln -s /usr/local/mysql-5.6.14-osx10.7-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
Я подтверждаю Патч от Abhishek тут работа.
это работает и для Йосемити.
Примечание.: вместо ссылки на конкретную версию mysql используйте факт mysql уже построил символическую ссылку:
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylibэто решение работает для Xcode и C API.
чтобы быть уверенным, что символическая ссылка необходима (зависит от версии mysql и версии ОС):
$ 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
это работает для меня:
ln -s /usr/local/Cellar/mysql/5.6.22/lib/libmysqlclient.18.dylib /usr/local/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 нужна: операция не разрешена". Я никогда не видел этой ошибки раньше.после совсем немного покопавшись, я нашел эту статью: http://www.macworld.com/article/2986118/security/how-to-modify-system-integrity-protection-in-el-capitan.html и последовал инструкциям, чтобы отключить SIP (новая защита целостности системы El Capitan). После выключения SIP и после перезагрузки команда ln работала нормально. Затем я выключил глоток. Теперь все в порядке. Мое приложение снова запускается с помощью pow и без ошибок запускает скрипт / консоль. Я надеюсь, что это поможет вам.
на Mac Sierra если вы используете Homebrew, то сделайте:
sudo ln -s /usr/local/Cellar/[email protected]/5.6.34/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
для тех, кто использует самогон. Просто свяжите версию mysql с опцией "--force".
brew link mysql56 --force
используйте это из командной строки:
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пробовал на нескольких компьютерах с maverick всегда работает
Если вы используете Bitnami RubyStack и столкнулись с аналогичной проблемой. Попробуйте это
sudo ln -s /Applications/rubystack-2.0.0-17/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib
моя проблема с загрузкой этого файла пакета была плохой символической ссылкой. Поэтому проверьте ссылку и замените ее на новую, если это необходимо. В этот момент все встало на свои места. Не знаю, как это произошло, но это произошло. Первый раз, когда синтаксическая ошибка произошла так.
Я работал с рельсы G модель и я получил эту ошибку:
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оба они прекрасно работают для меня. Надеюсь, что это может быть полезно!
Я получил эту проблему " библиотека не загружена: libmysqlclient.18.dylib " при импорте MySQLdb из MySQL для python3:
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 Питон3.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
единственное, что сработало для меня:
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 и драгоценных камней, чтобы соответствовать вашей системы.
после того, как много погуглить и попробовать все выше...единственное, что решило мою проблему была эта команда:
$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.локальная версия ядра 15.6.0 Darwin 15.6.0: Чт 23 июня 18: 25: 34 PDT 2016; XXX:xnu-3248.60.10~1 / RELEASE_X86_64 x86_64 На Perl:У5.18.2 Mysql: 5.6.19
Comments