Вопрос по ruby-on-rails, macos, ruby, mysql – rails + MySQL на OSX: библиотека не загружена: libmysqlclient.18.dylib

111

Я только начинаю с Руби (и рельсов). Я сделал настройку в соответствии сhttp://ruby.railstutorial.org/ruby-on-rails-tutorial-book#sec:ruby драгоценные камни, используяrvm, У меня все работает хорошо с sqlite.

Теперь я хотел бы попытаться преобразовать вещи в MySQL, поскольку это то, чем я занимаюсь большую часть своей разработки. В моем Gemfile я заменил sqlite на mysql2:

<code>group :development, :test do
#  gem 'sqlite3', '1.3.5'
  gem 'mysql2'
  gem 'rspec-rails', '2.9.0'
end
</code>

Но когда я пытаюсь создать базу данных для рельсов в MySQL, я получаю:

<code>$ rake db:create --trace
rake aborted!
dlopen(/Users/username/.rvm/gems/[email protected]/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle, 9): Library not loaded: libmysqlclient.18.dylib
  Referenced from: /Users/username/.rvm/gems/[email protected]/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle
  Reason: image not found - /Users/username/.rvm/gems/[email protected]/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundle
</code>

Я видел другие публикации, рекомендующие переустановку MySQL через homebrew (мой был установлен через загружаемый DMG), но я предпочел бы не делать этого, поскольку у меня уже есть несколько других баз данных для других неруби-проектов.

У меня действительно есть файл, который ищет Rails; он установлен в/usr/local/mysql/lib/libmysqlclient.18.dylib, Каков наилучший способ сообщить Rails, как его найти?

В самом деле. Я не могу удалить свой вопрос? Проголосовал за закрытие как дуп. George Armhold
Может ли это быть дубликатом этого?stackoverflow.com/questions/4546698/… gmile

Ваш Ответ

22   ответа
121

В Эль Капитан я попалln: /usr/lib/libmysqlclient.18.dylib: Operation not permitted

В Эль Капитане/usr/lib/ теперь имеет ограниченный флаг и не может быть записан без отключения защиты, поэтому я просто помещаю ссылку в/usr/local/lib вместо.

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

Сервер Rails снова работает нормально.

Я сделал это и получил: "connect": не могу подключиться к локальному серверу MySQL через сокет /tmp/mysql.sock' (2) (Mysql2 :: Ошибка) & quot;
да, сервер не работал ... это исправило. sudo /usr/local/mysql/support-files/mysql.server start
@JoshHunter Я считаю, что это отдельная проблема. Здесь есть темаstackoverflow.com/questions/18449050/…  может также просто быть, что сервер MySQL не работает.
Не нужен весь ответ Алекса. Одна символическая ссылка сделала свое дело.
спас мой день .. Спасибо, человек ..
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 и gems, чтобы соответствовать вашей системе.

0

Я получил эту проблему & quot; Библиотека не загружена: libmysqlclient.18.dylib & quot; при импорте 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 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 Конечно, это отвечает на вопрос. Он даже предоставляет новую информацию. Тот факт, что ответ включает в себя ошибку, которая привела их сюда, не означает, что решение, которое они также предоставляют, не имеет ценности.
0

Моя проблема с загрузкой этого файла пакета была плохой символической ссылкой. Поэтому проверьте ссылку и замените ее новой, если это необходимо. Все встало на свои места в этот момент. Не уверен, как это случилось, но это случилось. Первый раз, когда произошла синтаксическая ошибка.

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
300

Решение довольно простое; Добавьте путь к библиотеке в файл ~ / .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
Симлинк сработал у меня (после обновления до Mountain Lion). Спасибо!
Symlink делает это, особенно для таких случаев, как запуск рельсов из-под RubyMine, где.bash_profile действительно не применимо.
@JonathanSimmons - Ты только что спас меня от того, чтобы вырвать мои волосы. Исходный ответ по символической ссылке не работает в OS X 10.11.5, вы просто получаете ошибку "ln: /usr/lib/libmysqlclient.18.dylib: Операция не разрешена" & quot; - Теперь все работает, и я, наконец, могу приступить к работе на сегодня ... Спасибо!
Я добавил ваш DYLD_LIBRARY_PATH в .bash_profile, но мне также пришлось удалить & quot; mysql2 & reg; драгоценный камень тогда переустановите это. как: "gem uninstall mysql2 & amp; & amp; gem install mysql2 & apos;
Для тех, кто приходит сюда 10.11, вы не можете использовать символическую ссылку наusr/lib больше, но символическая ссылка наusr/local/lib буду работать:sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
43

В то время как заголовок этого вопроса точно описывает проблему, с которой я столкнулся, обстоятельства отличаются от описанных в предыдущих ответах, так же как и решение.

В моем случае (El Capitan, mysql установлен через homebrew),brew update && brew upgrade вызвал обновление пакета mysql до 5.7.10 (с 5.6.x).

Обновление вызвалоlibmysqlclient.18.dylib подлежит замене наlibmysqlclient.20.dylib, ноmysql2 драгоценный камень все еще полагался на первое.

Чтобы решить проблему, я сделал:gem uninstall mysql2 && gem install mysql2

Обратите внимание, что похожие проблемы могут возникать с различными библиотеками, управляемыми доморощеннымсм. мой собственный ответ на это, например)

Это сработало отлично.
Для любых пользователей Python, попадающих сюда,pip uninstall mysqlclient а такжеpip install mysqlclient тоже сработало.
Большой ! Я обновил свой mysql до 5.7 ... столкнулся с этой проблемой ..... сделал Следующие шаги 1. gem uninstall mysql2 & gt; выбранный вариант 3 2. gem install mysql2 3. добавил это в gemfile проекта --- & gt; gem "mysql2", "~ & gt; 0.3.21 & APOS; 4. комплектация
У меня тоже сработало. Проблема была в том, что я перешел с установки mysql w / homebrew на официальный установщик.
I recommend everyone try this first!  Если это сработает, вы можете избежать использования вашей системы с помощью других обходных путей. Иногда вам приходится полагаться на магические символические ссылки и т. Д., Но это делает вашу систему все более и более хрупкой. (Если это не сработает, никакого вреда не будет и ничего нельзя отменить.)
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
 Эта команда вызвала ошибку: & lt; ln: /usr/lib/libmysqlclient.18.dylib: операция не разрешена & quot ;. Я никогда не видел эту ошибку раньше.

После долгого копания я нашел эту статью:http://www.macworld.com/article/2986118/security/how-to-modify-system-integrity-protection-in-el-capitan.html и следовал инструкциям, чтобы отключить SIP (новую защиту целостности системы El Capitan). После выключения SIP и после перезагрузки команда ln работала нормально. Затем я выключил SIP. Теперь все в порядке. Мое приложение запускается снова с использованием Pow и без ошибок при запуске скрипта / консоли. Я надеюсь, это поможет вам.

9

Я столкнулся с этой проблемой после полного удаления, а затем новой установки MySQL. В частности:

Library not loaded: /usr/local/opt/mysql/lib/libmysqlclient.20.dylib

Я даже не коснулся моего приложения на Rails.

Переустановкаmysql2 гем решил эту проблему.

$ 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]

6

Для 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
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
16
sudo ln -s /usr/local/mysql/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Работал на меня. Все подобные не были.

Это решение для RubyMine.
4

Подтверждаю патч от Абхишекdoes Работа.

это работает и для Йосемити.

нота: вместо ссылки на конкретную версию mysql используйте тот факт, что mysql уже создал символическую ссылку:

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

это решение работает для Xcode и C API.

1

На Mac Sierra, если вы используете Homebrew, выполните:

sudo ln -s /usr/local/Cellar/[email protected]/5.6.34/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
25
sudo ln -s /usr/local/mysql-5.5.25-osx10.6-x86_64/lib/libmysqlclient.18.dylib /usr/lib/libmysqlclient.18.dylib

Это сработало для меня. Я установил MySQL из файла DMG.

Это работало на Mac OS X - Yosemite для меня с MySQL, установленным из файла dmg. Спасибо, Джозеф.
Операция не разрешена (очевидно, с sudo), моя SO версия El Capitan
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

После долгих поисков и поисков ... единственное, что решило мою проблему, была эта команда:

$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.local 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: v5.18.2 Mysql: 5.6.19

9

Если вы используете MySQL, установленный из HomeBrew в El Capitan, вы должны связать его следующим образом:

sudo ln -sf /usr/local/Cellar/mysql/5.6.27/lib/libmysqlclient.18.dylib /usr/local/lib/libmysqlclient.18.dylib
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

Для тех, кто использует варево. Просто свяжите свою версию mysql с & quot; - force & quot; вариант.

brew link mysql56 --force
Это способ связать файл библиотеки ... а не использовать опцию ln -s. Используйте ссылку brew [email protected] --force для обновленной версии
Благодарю. я сделалbrew link [email protected] --force, Работал отлично.
1
gem uninstall -aIx

а также

bundle install

работал на меня.

Похожие вопросы