web-dev-qa-db-fra.com

Mise à niveau d'El Capitan: bibliothèque non chargée: /usr/local/lib/libmysqlclient.18.dylib

Erreur:

/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

Dans 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

Comme vous le voyez, je vais libmysqlclient.20.dylib, c'est 20 ne pas 18, sinon je suivrais la solution ici .

J'ai récemment mis à niveau vers El Capitan, mais je ne suis pas sûr que ce soit la cause.

MISE À JOUR:

Merci à @Rashmirathi pour l'astuce pour réinstaller la gemme.

Je voulais juste noter que je devais également spécifier dans Gemfile:

gem 'mysql2', '~> 0.3.18'

Sinon, j'ai eu une erreur:

"Mysql2" spécifié pour l'adaptateur de base de données, mais la gemme n'est pas chargée. Ajouter gem 'mysql2' à votre Gemfile (et assurez-vous que sa version est au minimum requise par ActiveRecord).

Mais finalement j'ai eu une erreur:

Mysql2 :: Erreur
Votre mot de passe a expiré. Pour vous connecter, vous devez le modifier à l'aide d'un client qui prend en charge les mots de passe expirés.

Ce qui est résolu en définissant à nouveau un mot de passe:

SET PASSWORD=PASSWORD('your_password');
32
Askar

J'obtenais le même problème plus tôt, je l'ai résolu en réinstallant la gemme mysql2.

53
Rashmirathi

cela résoudra votre problème:

gem pristine mysql2

solution par Cesar Sulbarán

40

Pour ceux sur OS X El Capitain ou plus, cela résout mon problème:

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

Pour plus d'informations https://stackoverflow.com/a/32875545/1066915

23
Fabien Sa

J'ai eu un problème analogue en python: libmysqlclient.20.dylib au lieu de 18 sur El Capitan. pip install --upgrade mysql l'a corrigé, mais ne fonctionne qu'en python2.

5
ben.dichter

J'utilise Homebrew, j'ai donc résolu ce problème en clarifiant tout étape par étape:

  1. Commentez la gemme mysql2 dans le Rails app Gemfile

    "# gem 'mysql2'"

  2. Supprimer mysql2 gem du bundle

    installation du bundle

  3. Désinstallez la gemme mysql2 (toutes les versions)

    gem désinstaller mysql2

  4. Mettre à jour Homebrew

    mise à jour de brassage

  5. Désinstaller toutes les versions de mysql

    désinstallation de brew --force mysql

  6. Réinstaller mysql

    installer brew mysql

  7. Décommenter la gemme mysql2 dans Gemfile

    gem mysql2

  8. Ajouter mysql2 au bundle

    installation du bundle

Cette approche peut être un peu exagérée mais me semble propre.

4
allesklar

Je veux juste sonner ici - j'ai juste eu le même problème avec la différence libmysqlclient.18.dylib 18-20. réinstallation de la gemme mysql (une dépendance de la activerecord-mysql-adapter) a fait la différence. réinstaller mysql2 n'a rien fait.

édition pour clarifier: mon message d'erreur remonte à mon joyau mysql, mais j'ai trouvé ce fil via la recherche, donc je l'inclus ici:

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)
1
erikdstock