Обновление 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::Ошибка
Срок действия пароля истек. Для входа в систему необходимо изменить его с помощью клиента, поддерживающего просроченные пароли.

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

SET PASSWORD=PASSWORD('your_password');

6 ответов


Я получал ту же проблему раньше, я исправил ее, переустановив gem mysql2.


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

gem pristine mysql2

решение Сезар Sulbarán


для тех, кто на 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


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


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

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

    "# gem 'mysql2'"

  2. удалить mysql2 gem из пакета

    bundle install

  3. удалите драгоценный камень mysql2 (все версии)

    gem удалить mysql2

  4. обновление Доморощенный

    brew update

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

    brew uninstall --force mysql

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

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

  7. раскомментировать mysql2 gem в Gemfile

    gem mysql2

  8. добавить mysql2 в комплект

    bundle install

этот подход может быть немного перебор, но я чувствую себя чистым.


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

редактирование для уточнения: мое сообщение об ошибке прослеживается до моего MySQL gem, но я нашел этот поток через поиск, поэтому я включаю его здесь:

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)