Gem :: LoadError para la gema mysql2, pero ya está en Gemfile

103
Gem::LoadError
Specified 'mysql2' for database adapter, but the gem is not loaded.
Add `gem 'mysql2'` to your Gemfile

Este error ocurrió al cargar los siguientes archivos:

active_record/base

Este es el error que obtengo al ejecutar el servidor de rieles.

The mysql2 gem has been added to the Gemfile as well.

Lo he hecho bundle installe intenté reiniciar el servidor, pero sigo recibiendo el error.

Mysoulisinseoul
fuente
¿Ejecutó bundledespués de agregar la gema y reiniciar el servidor?
Bachan Smruty
@BachanSmruty: Sí, lo he hecho.
Mysoulisinseoul
¿Está esto en implementación? Have you runbundle install --deployment
j-dexx

Respuestas:

247

Si tiene este error al actualizar a rails 4.2.4 (también con rails 4.1.5) intente usar esta versión de mysql2:

gem 'mysql2', '~> 0.3.18'

Aparentemente, mysql2 todavía no es compatible con la versión más nueva de rieles porque rieles 4.2.4 es bastante nuevo ya que el momento de responder esta pregunta por mí el 8 de septiembre de 2015, así que use la línea anterior en su archivo de gemas y ejecute:

bundle install 

Usted debe ser bueno para ir

Hassan Azimi
fuente
2
en msyql2_adapter.rb, encuentro los códigos a continuación: gem 'mysql2', '~> 0.3.13' require 'mysql2' esta podría ser la razón por la que la versión predeterminada de mysql2 4.xx no funcionará
Oscar Jiang
27

Me funcionó cuando especifiqué una versión de la gema mysql2 antes de la más nueva (0.4.0). Por alguna razón, hay un problema con Rails 4.2.4 y esa joya 0.4.0. Entonces, para resolver el problema, acabo de especificar la gema anterior publicada: 0.3.20 y ¡funcionó bien para mí!

gem 'mysql2', '~> 0.3.20'
bundle install

Puedes consultar todas las versiones de gemas aquí: https://rubygems.org/gems/mysql2/versions

rom5jp
fuente
16

Cambiar a

gem 'mysql2', '~> 0.3.18'

en su Gemfile.

Este hilo en el mysql2 oficial Github dice que haga esto. Debe declarar ese número de versión si tiene la versión 4.xx de rails

https://github.com/brianmario/mysql2/issues/675

Entonces corre bundle update mysql2.

suga_shane
fuente
2
¡Gracias! Para ser precisos, no lo desea, bundle updateya que esto actualizará todas sus gemas. El comando es bundle update mysql2. Puede parecer obvio, pero es un comando incorrecto y podría tener consecuencias no deseadas. (Para revertir bundle update, correr git checkout -- Gemfile.lock)
Nick
8

Recibí el mismo error después de una actualización a Rails 4.1 y logré resolverlo actualizando mysql2. Ejecute esto en la carpeta de su aplicación rails:

$ bundle update mysql2
valo
fuente
8

Este problema puede ocurrir si está utilizando una versión más reciente de rieles> 4

Siga estos dos sencillos pasos, funcionará. Abra su Gemfile y busque la siguiente línea

gem 'mysql2'

reemplace esa línea con una versión específica de mysql como a continuación

gem 'mysql2', '~> 0.3.18'

Ahora detenga el servidor y ejecute el paquete

bundle install

Ahora reinicia tu servidor. Deberia de funcionar.

rails s
Prabhakar Undurthi
fuente
7

Siendo principiante en ruby ​​no pude descifrar la línea gema 'mysql2', '~> 0.3.18'

simplemente significa ir a la carpeta del proyecto de rieles y luego hay una línea para mysql2, será como 0.4 * para que pueda cambiarlo a gem 'mysql2', '~> 0.3.18'

y como tenemos una nueva definición, tenemos que reconstruir la dependencia para hacer ese comando simple como se explica en la instalación del paquete superior

Salagar Muaaz
fuente
5

No carga la gema mysql2 porque la nueva versión de la gema mysql2 (0.4.1) no puede cargar mysql2_adaptor. Esto es trabajo para mí.

gem 'mysql2', '~> 0.3.13'

y correr

bundle install
sushilprj
fuente
2

Tuve el mismo error y esto se debe a que Rails 4.1 requiere como mínimo la versión 0.3.13 de mysql2 y la máxima compatibilidad con Windows es la versión 0.3.11.

Así que edité el archivo c:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\gems\activerecord-4.1.1\lib\active_record\connection_adapters\mysql2_adapter.rby cambié la línea gem 'mysql2', '~> 0.3.13'a gem 'mysql2', '~> 0.3.11', y funciona hasta ahora.

Lev Lukomsky
fuente
1

No carga la gema mysql2 porque la nueva versión de la gema mysql2 (> = 0.4.0) no puede cargar mysql2_adaptor. ¿Puedes probar esto?

gem 'mysql2', '~> 0.3.13'

Con suerte, debería funcionar.

Neeraj Kumar
fuente
0

Resolví el problema instalando mysql2 gem local (gem install mysql2, bundle install) y agregando la siguiente línea al Gemfile:

gem 'mysql2'

Configurar el adaptador mysql2 en database.yml

adapter: mysql2

¡También fue importante!

codificador atómico
fuente
0

Soy nuevo en Ruby on Rails y sitios web, pero escucho lo que funcionó para mí.

Tuve que cambiar mi archivo de gemas, gema 'mysql2' a gema 'mysql2', '~> 0.3.13' luego en rieles escribí la instalación del paquete, luego probé rieles sy obtuve errores, así que intenté actualizar el paquete mysql2 y luego en rieles escribí rieles s, y funcionó

siesta mate
fuente
0

Resolví el problema instalando libmysqlclient-dev. sudo aptitude install libmysqlclient-dev y luego ejecute bundle.

Fábio Coelho
fuente
-1

Anteriormente instalé mysql2 0.4.5 pero eso me estaba dando este error, así que instalé otra versión de mysql2 por:

gem install mysql2 --version 0.3.20

Espero que esto resuelva tu problema.

Prashant Choudhary
fuente