rails mysql ruby-on-rails windows mysql2
Enlace referenciado

rails mysql



gema mysql2 compilada para una biblioteca de cliente mysql incorrecta (8)

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

development: adapter: mysql2

más bien que

development: adapter: mysql

La gema 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 gema 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"

Cuando trato de conectarme al servidor mysql a través de mi aplicación de rieles, 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?


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

> 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.


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? )

gema 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


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-with-it/

Básicamente, tienes que descargar un solo conector del sitio web de mysql y compilar 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 el mismo problema que tú, o al menos el síntoma fue el mismo.

Antecedentes: estaba usando Rails 3, la gema 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 gema 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



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 gema y eso solucionó el problema.


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.