Ich verwende Ruby 2.3, und in der Gemfile habe ich den mysql2-Gem aufgelistet. Wenn ich versuche, rake db:migrate
auszuführen, erhalte ich Folgendes:
/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)
Ich kann anscheinend nicht herumkommen. Ich habe Mysql 5.7 mit Homebrew installiert, habe versucht, das Bundle zu aktualisieren, den mysql2-Gem zu deinstallieren und erneut zu installieren, alles ohne Erfolg.
Wie kann ich das lösen?
Am Ende habe ich das mit gem pristine --all
gelöst.
Ich habe dies mit gem pristine mysql2
gefolgt von spring stop
gelöst.
Ich habe das gleiche Problem erlebt. Ich hatte Ruby 2.3.4 installiert und benutzte Rails 4.6.2.
Es gab zwei Ursachen und das Supportteam des Hosting-Unternehmens, das ich verwendete, half mir bei der Lösung des Problems.
Die erste war, dass die installierte mysql2 lib standardmäßig mit Ruby 1.8 anstelle von Ruby 2 verknüpft war
# lld ../2.2.0/mysql2-0.4.4/mysql2/mysql2.so
...
...
libruby.so.1.8 => /usr/lib64/libruby.so.1.8 (0x00007f2af1f8a000)
...
Das zweite Problem war das Kompilieren der lib mit der installierten mysql server config
Daher musste mysql2 gem mit der richtigen Ruby-Bibliothek deinstalliert und erneut installiert und mit der richtigen mysql-Konfiguration kompiliert werden.
Unten sind die Befehle.
gem uninstall mysql2
gem install mysql2 -- --with-mysql-config=/usr/bin/mysql_config --with-opt-lib=/where/my/Ruby22/lib_was_located/
sudo Gem Pristine zu betreiben, hat mysql2 bei mir nicht funktioniert.
Ich musste den mysql2 gem deinstallieren und erneut installieren.
Das einzige, was für mich funktioniert hat, war
gem install nokogiri -v 1.10.2
danach war es gut.
Dieses Problem trat bei Ubuntu 16.04 auf
Das Folgende hat den Trick gemacht
Sudo apt-get install g++
Sudo apt-get install build-essential