gem mysql2 comstackda para la biblioteca de cliente mysql incorrecta

Cuando trato de conectarme al servidor mysql a través de mi aplicación de Rails, aparece el siguiente error

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) 

¿Cómo puedo rectificarlo?

Tuve el mismo problema que tú, o al menos el síntoma fue el mismo.

Antecedentes: estaba usando Rails 3, la gem mysql2 y MySQL Community Server versión 5.5.21 (32 bits) instalados localmente en mi máquina Windows. Agarré la biblioteca del cliente ( libmysql.dll ) de la instalación de MySQL y la copié en la carpeta bin mi instalación Ruby.

Cuando ejecuté bundle exec rake db:create , recibí el mismo mensaje de error que tú y pensé “Oye, ¿cómo puede la biblioteca del cliente estar desactualizada cuando la obtuve de la última versión de MySQL?”

Hay un mensaje útil que se muestra cuando gem install mysql2 . Desafortunadamente, si instala la gem con Bundler, Bundler come el mensaje. Aquí 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 

Seguir estas instrucciones resolvió el problema para mí.

Enlace referenciado

La desinstalación y reinstalación de la gem a menudo resolverá este problema sin necesidad de descargar y mover archivos manualmente. Desde su directorio de aplicaciones de Rails:

 > 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) ...  ... Installing mysql2 (0.3.11) with native extensions ...  ... Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed. 

Si está utilizando la versión de 64 bits de MySQL y la versión de 32 bits de Ruby, entonces verifique esta solución en http://blog.mmediasys.com/2011/07/07/installing-mysql-on-windows-7-x64-and-using -ruby-con-it /

Básicamente, tienes que descargar un solo conector del sitio web de mysql y comstackr mysql o mysql2 con el conector que descargaste.

para Ruby 1.9.2:

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

para Ruby 1.9.3: (mostrando la variante mysql2)

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

Tenga en cuenta el uso de barras diagonales para el directorio donde se extrajo MySQL Connector / C.

Tuve un problema así:

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

El problema para mí fue que tenía ambas versiones, 5.5.29 y 5.6.17, instaladas en mi máquina. No tengo idea de cómo. Cuando lo incluí, eligió automáticamente la versión 5.5.29. Desinstalé ese y luego reinstalé mi gem y eso solucionó el problema.

Descubrí una causa completamente diferente para este problema. He estado usando la gem mysql. Creé la gem mysql2 pero olvidé actualizar mi database.yml. Con la gem mysql2, necesita decir:

  development: adapter: mysql2 

más bien que

  development: adapter: mysql 

La gem se construyó, pero obtuve el error la próxima vez que corrí el rastrillo.

Obvio una vez que lo has visto, ¡pero recibes el mismo mensaje de error que se menciona aquí!

Por cierto, el comando para construir la gem mysql2 en mi máquina fue un poco más complicado que el descrito anteriormente:

 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" 

Para agregar a la respuesta existente. (plataforma de Windows específicamente)

Ruby realmente apesta sobre esto. A Rails no debería importarle la versión del conector o la versión de mysql. – pero esa es mi opinión.

Para que esto funcione, necesitas 2 cosas. mysql2 gem y libmysql.dll y necesitas unirlos en términos de la versión. ( Esto me causó confusión, porque puedo ver que el último conector es 6.x, mientras que mysql solo es 5.x, ¿cómo debo unirlos? )

gem mysql2 y cuando lo instales, debes especificar el conector.

  gem install mysql2 --platform=ruby -- --with-mysql-lib="d:\mysql\lib" --with-mysql-include="d:\mysql\include" 

no necesita ser un conector descargado de Oracle . todo lo que necesita es una instalación mysql y la carpeta lib include debajo de ella. a continuación, coloque libmysql.dll en la carpeta railsinstaller bin .

si no funcionó para hacer que instales mysql2 joya exitosamente => para mi caso es porque mi mysql es demasiado viejo (¿por qué ruby ​​importa eso?). entonces obtengo el último mysql de Oracle. use lib include libmysql.dll . realmente no necesita actualizar su base de datos, puede guardarla en algún lugar y continuar usándola después de generar los 2 componentes requeridos

mi caso: uso una base de datos mysql muy antigua y no estoy dispuesto a actualizarla en este momento. entonces respaldo esa base de datos y la restauré luego

en mi caso en Windows, copié incorrectamente libmysql.dll del directorio de MySQL Server 5.5 a ruby200 / bin. correcto es copiar libmysql.dll de mysql-connector-c-noinstall-6.0.2-win32.

Tuve el mismo problema, y ​​he resuelto lo siguiente:

1 :: Descargue el zip en el siguiente enlace: https://dev.mysql.com/downloads/connector/c/

2 :: descomprime el archivo ( libmysql.dll ) en la carpeta del proyecto ” Proveedor “.

3 :: Volve uno para ejecutar la bundle install comando

y listo, resuelto!

https://dev.mysql.com/downloads/connector/c/