mysql2 gem kompiliert für falsche mysql-Client-Bibliothek
Wenn Sie versuchen, eine Verbindung zum mysql-server über meine rails-Anwendung, bekomme ich die folgende Fehlermeldung
D:/Program_Files/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require':
Incorrect MySQL client library version! This gem was compiled for 6.0.0 but the client library is 5.0.27. (RuntimeError)
Wie kann ich das beheben?
InformationsquelleAutor der Frage Rahul | 2012-01-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem wie du, oder zumindest das symptom war das gleiche.
Hintergrund: ich war mit Rails 3, das mysql2 gem, und die MySQL-community-server-version 5.5.21 (32-bit) installiert, der lokal auf meinem Windows-Rechner. Ich packte die client-Bibliothek (
libmysql.dll
) aus der MySQL-installation und kopiert es auf meine ruby-installationbin
Ordner.Wenn ich ran
bundle exec rake db:create
ich habe die gleiche Fehlermeldung wie du, und ich dachte "Hey, wie können die client-Bibliothek veraltet sein, als ich es bekam von der neuesten MySQL-Version?"Gibt es eine hilfreiche Meldung, die angezeigt wird, wenn Sie
gem install mysql2
. Leider, wenn Sie das Schmuckstück mit Bundle, Bundler isst die Nachricht. Hier ist es:Folgenden Anweisungen, das problem bei mir gelöst.
Referenzierte link
InformationsquelleAutor der Antwort antinome
Deinstallieren und Neuinstallieren der Edelstein wird oft das Problem lösen, ohne die Notwendigkeit, herunterzuladen und zu bewegen, um die Dateien von hand. Aus Ihrer rails-app Verzeichnis:
InformationsquelleAutor der Antwort chrislopresto
Wenn Sie mit 64-bit-version von mysql-und 32-bit-version von ruby, dann überprüfen Sie diese Lösung auf http://blog.mmediasys.com/2011/07/07/installing-mysql-on-windows-7-x64-and-using-ruby-with-it/
Haben Sie grundsätzlich das herunterladen einer single connector von mysql-website und kompilieren Sie mysql und mysql2 mit Stecker, die Sie heruntergeladen.
für Ruby 1.9.2:
für Ruby 1.9.3: (zeigt mysql2-Variante)
Beachten Sie die Verwendung der Schrägstrich für das Verzeichnis, in dem MySQL Connector/C extrahiert wurde.
InformationsquelleAutor der Antwort user482594
Hatte ich ein Problem wie dieses:
Das Problem für mich war, dass ich hatte beide Versionen, 5.5.29 und 5.6.17, auf meinem Rechner installiert. Ich habe keine Ahnung, wie. Wenn ich gebündelte es automatisch wählte die version 5.5.29. Ich habe deinstalliert und dann neu installiert, mein Juwel, und dass das Problem behoben wurde.
InformationsquelleAutor der Antwort Victor Kmita
Entdeckte ich eine völlig andere Ursache für dieses problem. Ich war mit der mysql-gem. Ich baute das mysql2 gem, aber ich habe vergessen zu aktualisieren meiner Datenbank.yml. Mit der mysql2 gem, die es braucht, um zu sagen:
eher als
Den Edelstein gebaut, aber ich bekam die Fehlermeldung, wenn ich weiter lief rake.
Offensichtlich, nachdem Sie ihn gesehen haben, aber Sie bekommen die gleiche Fehlermeldung wie hier beschrieben!
Durch die Art und Weise, den Befehl zum Bau der mysql2 gem auf meinem Rechner, war ein wenig komplizierter als oben beschrieben:
InformationsquelleAutor der Antwort user1208639
Hinzufügen, um den vorhandenen Antwort. ( windows-Plattform, die speziell )
Ruby ist wirklich beschissen auf der Oberseite dieses. Schienen sollten nicht eigentlich Sorge um die version des connectors oder die mysql-version. -- aber das ist meine Meinung.
In, um sich dieser **ing Sache arbeiten, benötigen Sie 2 Dinge.
mysql2 gem
undlibmysql.dll
und Sie brauchen, um Sie im Hinblick auf die version haben. (dies verursachte Verwirrung für mich, weil ich sehen kann, der Letzte Stecker ist 6.x während mysql ist nur 5.x, wie soll ich mit Ihnen bis)mysql2 gem. und wenn Sie es installieren, müssen Sie den connector.
muss es nicht sein-connector heruntergeladen von oracle. alles, was Sie brauchen, ist ein mysql-installation und die
lib
include
Ordner darunter. setzen Sie dann dielibmysql.dll
unterrailsinstaller bin
Ordner.wenn es nicht funktioniert, machen Sie install mysql2 gem erfolgreich => für meinen Fall ist es, weil mein mysql zu alt ist (warum sollte ruby care). so bekomme ich einige aktuelle mysql von oracle. verwenden Sie die
lib
include
libmysql.dll
unter. Sie nicht wirklich brauchen, um ein upgrade Ihrer Datenbank, Sie können halten Sie es irgendwo und es weiterhin nutzen, nachdem Sie generiert die 2 erforderlichen Komponentenmeinem Fall: ich habe einen sehr alten mysql-Datenbank und ich bin nicht bereit, um es zu aktualisieren im moment. so ich wieder, dass die Datenbank auf und restaurierte es später
InformationsquelleAutor der Antwort zinking
in meinem Fall auf windows, falsch kopiert libmysql.dll von MySQL Server 5.5-Verzeichnis zu ruby200/bin. korrigieren kopieren libmysql.dll von mysql-connector-c-noinstall = -6.0.2-win32.
InformationsquelleAutor der Antwort user2315251
Ich hatte das gleiche problem , und ich habe entschieden die folgt:
1 :: Download der zip den folgenden link: https://dev.mysql.com/downloads/connector/c/
2 :: Dekomprimieren Sie die Datei ( libmysql.dll ) in der " Anbieter" - Ordner des Projektes.
3 :: Volve ein, um den Befehl auszuführen
bundle install
und fertig , Problem gelöst !
https://dev.mysql.com/downloads/connector/c/
InformationsquelleAutor der Antwort Yulian D.