web-dev-qa-db-fra.com

Comment résoudre la "version de bibliothèque incompatible" pour mysql2 gem avec Ruby 2.3 sur OS X?

J'utilise Ruby 2.3, et dans le fichier gem, j'ai la gem mysql2 répertoriée. Mais lorsque j'essaie d'exécuter rake db:migrate, j'obtiens les éléments suivants:

/Users/me/.gem/Ruby/2.3.0/gems/mysql2-0.4.2/lib/mysql2.rb:31:in `require': incompatible library version - /Users/me/.gem/Ruby/2.3.0/gems/mysql2-0.4.2/lib/mysql2/mysql2.bundle (fatal)

Je n'arrive pas à contourner celui-ci. J'ai installé Mysql 5.7 avec Homebrew, essayé de mettre à jour le paquet, de désinstaller et de réinstaller la gem mysql2, en vain.

Comment puis-je résoudre ce problème?

24
croceldon

J'ai fini par résoudre ceci avec gem pristine --all

39
croceldon

J'ai résolu ceci avec gem pristine mysql2 suivi de spring stop.

8
joe

J'ai vécu le même problème. J'avais Ruby 2.3.4 installé et utilisant Rails 4.6.2.

Il y avait deux causes de problèmes et l'équipe de support de la société d'hébergement que j'utilisais m'a aidé à résoudre le problème.

La première était que la librairie mysql2 installée était, par défaut, liée à Ruby 1.8 au lieu de Ruby 2

# lld ../2.2.0/mysql2-0.4.4/mysql2/mysql2.so
... 
...
libruby.so.1.8 => /usr/lib64/libruby.so.1.8 (0x00007f2af1f8a000)
...

Le deuxième problème était de compiler la bibliothèque avec la configuration du serveur mysql installée

Donc, mysql2 gem devait être désinstallé et réinstallé avec la bonne lib Ruby et compilé avec la bonne configuration mysql.

Ci-dessous sont les commandes.

gem uninstall mysql2
gem install mysql2 -- --with-mysql-config=/usr/bin/mysql_config --with-opt-lib=/where/my/Ruby22/lib_was_located/
0
mwangi

exécuter Sudo gem pristine mysql2 ne fonctionnait pas pour moi.

Je devais désinstaller et réinstaller la gem mysql2.

0
Krishna Vedula

J'ai rencontré ce problème en passant à Ubuntu 16.04

Ce qui suit a fait le tour

Sudo apt-get install g++
Sudo apt-get install build-essential
0
user3487016