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?
J'ai fini par résoudre ceci avec gem pristine --all
J'ai résolu ceci avec gem pristine mysql2
suivi de spring stop
.
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/
exécuter Sudo gem pristine mysql2 ne fonctionnait pas pour moi.
Je devais désinstaller et réinstaller la gem mysql2.
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