65 votes

mysql2 gem compilé pour le mal bibliothèque client mysql

Lorsque vous essayez de vous connecter au serveur mysql via mon application rails, j'obtiens l'erreur suivante

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)

Comment puis-je la corriger?

103voto

chrislopresto Points 799

Désinstallation et réinstallation du gem va souvent de résoudre ce problème sans avoir besoin de télécharger et déplacer des fichiers à la main. À partir de votre application rails répertoire:

> gem uninstall mysql2

You have requested to uninstall the gem:
    mysql2-0.3.11
database_cleaner-0.9.1 depends on [mysql2 (>= 0)]
If you remove this gems, one or more dependencies will not be met.
Continue with Uninstall? [Yn]  Y
Successfully uninstalled mysql2-0.3.11

> bundle install

Fetching gem metadata from http://rubygems.org/......
Fetching gem metadata from http://rubygems.org/..
Using rake (0.9.2)
Using i18n (0.6.1)
... <SNIP> ...
Installing mysql2 (0.3.11) with native extensions
... <SNIP> ...
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

88voto

antinome Points 1751

J'ai eu le même problème que vous, ou au moins le symptôme est le même.

Contexte: j'ai été à l'aide de Rails 3, le mysql2 gem, et MySQL community server version 5.5.21 (32 bits) installé en local sur ma machine Windows. J'ai attrapé le client de la bibliothèque (libmysql.dll) de l'installation de MySQL et copié sur mon ruby installation de l' bin le dossier.

Quand j'ai couru bundle exec rake db:create, j'ai eu le même message d'erreur que vous et j'ai pensé: "Hé, comment le client peut-il la bibliothèque être dépassée lorsque je l'ai eu à partir de la dernière MySQL version?"

Il est utile de message qui s'affiche lorsque vous gem install mysql2. Malheureusement, si vous avez installer la gem avec Bundler, Bundler mange le message. Ici, il est:

=========================================================================
You've installed the binary version of mysql2. It was built using MySQL 
Connector/C version 6.0.2. It's recommended to use the exact same version
to avoid potential issues.

At the time of building this gem, the necessary DLL files where available
in the following download:

http://dev.mysql.com/get/Downloads/Connector-C/mysql-connector-c-noinstall-6.0.2-win32.zip/from/pick

And put lib\libmysql.dll file in your Ruby bin directory, for example
C:\Ruby\bin

En suivant ces instructions résolu le problème pour moi.

Lien référencé

10voto

user482594 Points 2923

Si vous utilisez la version 64 bits de mysql et 32 bits version de ruby, puis vérifier cette solution sur http://blog.mmediasys.com/2011/07/07/installing-mysql-on-windows-7-x64-and-using-ruby-with-it/

En gros, vous avez le téléchargement d'un seul connecteur de site web de mysql, et de compiler mysql ou mysql2 avec connecteur que vous avez téléchargé.

pour Ruby 1.9.2:

gem install mysql --platform=ruby -- --with-mysql-dir=C:/mysql-connector-c-noinstall-6.0.2-win32

pour Ruby 1.9.3: (montrant mysql2 variante)

gem pristine mysql2 -- --with-mysql-config=C:\mysql-connector-c-noinstall-6.0.2-win32    

Notez l'utilisation de barres obliques pour le répertoire où MySQL Connector/C a été extraite.

3voto

Victor Kmita Points 52

J'ai eu un problème comme ceci:

Incorrect MySQL client library version! This gem was compiled for 5.5.29 but the client library is 5.6.17.

Le problème pour moi est que j'ai eu les deux versions, 5.5.29 et 5.6.17, installé sur ma machine. Je n'ai aucune idée de comment. Quand j'ai inclu automatiquement choisi le 5.5.29 version. J'ai désinstallé que l'on puis réinstallé ma perle rare et qui a résolu le problème.

2voto

user1208639 Points 76

J'ai découvert un de complètement différent cause de ce problème. J'avais été en utilisant le gem mysql. J'ai construit le mysql2 gem mais j'ai oublié de mettre à jour ma base de données.yml. Avec le mysql2 gem, il doit dire:

  development:
    adapter: mysql2

plutôt que de

  development:
    adapter: mysql

Le joyau construit, mais j'ai eu le message d'erreur quand je l'ai ensuite couru râteau.

Évident, une fois que vous l'avez vu, mais vous obtenez le même message d'erreur tel que discuté ici!

Par ailleurs, le commandement de construire le mysql2 gem sur ma machine était un peu plus compliqué que décrit ci-dessus:

gem install mysql2 -- --with-mysql-lib="c:\mysql-connector-c-noinstall-6.0.2-win32\lib"  --with-mysql-include="c:\mysql-connector-c-noinstall-6.0.2-win32\include" --with-mysql-dir="c:\mysql-connector-c-noinstall-6.0.2-win32"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X