Обновление El Capitan: библиотека не загружена: /usr/local/lib/libmysqlclient.18.dylib

Ошибка:

/Users/askar/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/mysql2-0.3.20/lib/mysql2.rb:31:in `require': dlopen(/Users/askar/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/mysql2-0.3.20/mysql2/mysql2.bundle, 9): Library not loaded: /usr/local/lib/libmysqlclient.18.dylib (LoadError)
  Referenced from: /Users/askar/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/mysql2-0.3.20/mysql2/mysql2.bundle
  Reason: image not found - /Users/askar/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/extensions/x86_64-darwin-14/2.2.0-static/mysql2-0.3.20/mysql2/mysql2.bundle

В Gemfile: gem 'mysql2'

$ ls -al / usr / local / lib / libmysql *.

lrwxr-xr-x  1 askar  admin  49 Nov 13 10:48 /usr/local/lib/libmysqlclient.20.dylib -> ../Cellar/mysql/5.7.9/lib/libmysqlclient.20.dylib
lrwxr-xr-x  1 askar  admin  42 Nov 13 10:48 /usr/local/lib/libmysqlclient.a -> ../Cellar/mysql/5.7.9/lib/libmysqlclient.a
lrwxr-xr-x  1 askar  admin  46 Nov 13 10:48 /usr/local/lib/libmysqlclient.dylib -> ../Cellar/mysql/5.7.9/lib/libmysqlclient.dylib
lrwxr-xr-x  1 askar  admin  37 Nov 13 10:48 /usr/local/lib/libmysqld.a -> ../Cellar/mysql/5.7.9/lib/libmysqld.a
lrwxr-xr-x  1 askar  admin  44 Nov 13 10:48 /usr/local/lib/libmysqlservices.a -> ../Cellar/mysql/5.7.9/lib/libmysqlservices.a

$ ls -al /usr/local/Cellar/mysql/5.7.9/lib/

total 84392
drwxr-xr-x   9 askar  admin       306 Nov 12 22:16 .
drwxr-xr-x  14 askar  admin       476 Nov 13 10:48 ..
-r--r--r--   1 askar  admin   3780168 Nov 13 10:48 libmysqlclient.20.dylib
-r--r--r--   1 askar  admin   4280752 Nov 12 22:16 libmysqlclient.a
lrwxr-xr-x   1 askar  admin        23 Nov 12 22:16 libmysqlclient.dylib -> libmysqlclient.20.dylib
-r--r--r--   1 askar  admin  35126528 Nov 12 22:16 libmysqld.a
-r--r--r--   1 askar  admin      9048 Nov 12 22:16 libmysqlservices.a
drwxr-xr-x   3 askar  admin       102 Nov 13 10:48 pkgconfig
drwxr-xr-x  43 askar  admin      1462 Nov 12 22:17 plugin
drwxr-xr-x  43 askar  admin      1462 Nov 12 22:17 plugin

Как вы видите, у меня libmysqlclient.20.dylib, это 20 не 18, иначе я бы следовал решению здесь.

Я недавно перешел на El Capitan, но не уверен, что это причина.

ОБНОВЛЕНИЕ:

Спасибо @Rashmirathi за подсказку по переустановке гема.

Просто хотел отметить, что мне также нужно было указать в Gemfile как:

gem 'mysql2', '~> 0.3.18'

В противном случае у меня была ошибка:

Указан mysql2 для адаптера базы данных, но гем не загружен. Добавьте gem 'mysql2' в свой Gemfile (и убедитесь, что его версия минимальна, требуемая ActiveRecord).

Но в конце концов я получил ошибку:

Mysql2 :: Error
Срок действия вашего пароля истек. Для входа необходимо изменить его с помощью клиента, поддерживающего просроченные пароли.

Что решается повторной установкой пароля:

SET PASSWORD=PASSWORD('your_password');

person Askar    schedule 18.11.2015    source источник
comment
Я столкнулся с той же проблемой сразу после обновления до El Captain. Не уверен, почему Apple еще не устранила проблему. Даже после обновления mysql и MySQL-python через pip проблема не устранена.   -  person iankit    schedule 22.01.2016


Ответы (6)


Раньше у меня была такая же проблема, я исправил ее, переустановив гем mysql2.

person Rashmirathi    schedule 18.11.2015
comment
Я обновил свой пост, который может вас заинтересовать ...;) - person Askar; 19.11.2015
comment
Для справки в будущем я попал в эту ветку из-за аналогичных проблем в Python и pip, и это решение также работало (pip uninstall MySQL-python && pip install MySQL-python). - person Valmiky Arquissandas; 27.04.2016
comment
Если установлена ​​только одна версия mysql, переустановка - только решение. - person Sukeerthi Adiga; 04.12.2017

это решит вашу проблему:

gem pristine mysql2

решение от Cesar Sulbarán

person Jorge I. Castañeda M.    schedule 19.11.2015

Для тех, кто использует OS X El Capitain или более, это решит мою проблему:

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

Для получения дополнительной информации https://stackoverflow.com/a/32875545/1066915

person Fabien Sa    schedule 14.03.2016
comment
для меня это более общее решение: ln -nfs /usr/local/lib/libmysqlclient.dylib /usr/local/lib/libmysqlclient.18.dylib - person Arkhitech; 23.07.2016

У меня была аналогичная проблема в python: libmysqlclient.20.dylib вместо 18 на El Capitan. pip install --upgrade mysql исправил, но работает только в python2.

person ben.dichter    schedule 15.01.2016
comment
Соответствующая библиотека установлена ​​как pip install MySQL-python. Однако --upgrade у меня не сработало, так как у меня была последняя версия библиотеки, которая по какой-то причине была сломана. Комбинация удаления + установки сработала для меня. - person arsenyinfo; 20.02.2016
comment
@arsenyinfo, это сработало для меня. Я получил ошибки при обновлении / обновлении brew. - person Esteban; 20.09.2016

Я использую Homebrew, поэтому решил эту проблему, прояснив все шаг за шагом:

  1. Закомментируйте гем mysql2 в приложении Rails Gemfile

    "# gem 'mysql2'"

  2. Удалить гем mysql2 из пакета

    установка пакета

  3. Удалите гем mysql2 (все версии)

    гем удалить mysql2

  4. Обновить Homebrew

    варить обновление

  5. Удалите все версии mysql

    brew uninstall - форсировать mysql

  6. Переустановите mysql

    варить установить mysql

  7. Раскомментируйте гем mysql2 в Gemfile

    драгоценный камень mysql2

  8. Добавить mysql2 в пакет

    установка пакета

Такой подход может показаться излишним, но мне кажется чистым.

person allesklar    schedule 25.08.2016

Просто хочу поговорить здесь - у меня была такая же проблема с разницей libmysqlclient.18.dylib 18-20. переустановка драгоценного камня mysql (зависимость от activerecord-mysql-adapter) имела значение. переустановка mysql2 ничего не дала.

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

Please install the mysql adapter: `gem install activerecord-mysql-adapter` (dlopen(/Users/eriks/.rvm/gems/ruby-2.1.4/gems/mysql-2.9.1/lib/mysql/mysql_api.bundle, 9): 
Library not loaded: /usr/local/lib/libmysqlclient.18.dylib 
Referenced from: /Users/eriks/.rvm/gems/ruby-2.1.4/gems/mysql-2.9.1/lib/mysql/mysql_api.bundle
Reason: image not found - /Users/eriks/.rvm/gems/ruby-2.1.4/gems/mysql-2.9.1/lib/mysql/mysql_api.bundle) (LoadError)
person erikdstock    schedule 24.11.2015