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