ruby on rails - Rails 4-Gem:: LoadError: se especificó ''mysql2'' para el adaptador de base de datos, pero la gema no está cargada
ruby-on-rails ruby-on-rails-4 (9)
En mi archivo de gemas tengo:
gem ''mysql2''
Mi database.yml es la siguiente:
default: &default
adapter: mysql2
database: <%= ENV[''db_name''] %>
username: <%= ENV[''db_user''] %>
password: <%= ENV[''db_pass''] %>
host: <%= ENV[''db_host''] %>
pool: 32
socket: <%= ENV[''socket''] %>
development:
<<: *default
production:
<<: *default
Ejecuté tanto la
bundle update
bundle install
y mi Gemfile.lock muestra mysql2.
Sin embargo, cuando ejecuto
rake db:migrate
obtengo esto tanto en mi computadora como en el servidor provisional:
myproject.com(master)$ rake db:migrate
WARNING: Use strings for Figaro configuration. 10000012508 was converted to "10000012508".
WARNING: Use strings for Figaro configuration. 860526407370038 was converted to "860526407370038".
rake aborted!
Gem::LoadError: Specified ''mysql2'' for database adapter, but the gem is not loaded. Add `gem ''mysql2''` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).
.....
Solo para asegurarme de que no había una mala versión de mysql2 o algo así, hice un
bundle clean --force
y ejecuté la
bundle install
y
bundle update
nuevamente y cuando ejecuto la
gem list
veo
mysql2 (0.4.0)
y ninguna otra versión.
Cualquier idea sería muy apreciada.
SOLUCIÓN
Actualmente es un problema con Rails 4.1.xy 4.2.x, según este informe de error , se solucionará en la próxima versión de rails 4.2.x (crédito a dcorr en los comentarios para el enlace).
Mientras tanto, puede solucionarlo al actualizar a la versión 0.3.18 de mysql2 agregando esta línea a su archivo de gemas:
gem ''mysql2'', ''~> 0.3.18''
Como principiante completo, me confundí sobre cómo hacer esto, así que solo hice una comprobación de prueba y finalmente conseguí que mi servidor funcionara, así es como lo hice funcionar.
ingrese al archivo del directorio de trabajo ("work") y desde allí ingrese al archivo de la aplicación que creó ("sample_app") que tiene instalado mysql 2, vaya al archivo gem ("Gemfile") edite gem ''mysql2'' a gem ''mysql2'', ''~> 0.3.18''
ahora regrese a cmd y ejecute el comando "bundle install".
entonces el directorio para editar el archivo teniendo en cuenta los archivos anteriores entre paréntesis debe ser. "c / work / sample_app / Gemfile"
Espero haber sido de alguna ayuda.
Este problema se abordó aquí: https://github.com/brianmario/mysql2/issues/950
Para Rails 4.x, fije la gema a mysql2 ''~> 0.4.0'' para evitar la actualización 0.5.x.
Gemfile:
gem ''rails'', ''4.2.8''
gem ''mysql2'', ''~> 0.4.0''
Luego ejecute
bundle update rails mysql2
Actualmente estoy usando mysql v 8.0.11
Esto generalmente ocurre cuando faltan algunos paquetes mysql en su máquina.
¿
gem install mysql2
algún error de
gem install mysql2
?
¿En qué sistema operativo estás trabajando?
Si está en Debian o Ubuntu, pruebe
sudo apt-get install libmysqlclient-dev
.
También asegúrese de que la gema no se coloque dentro de una declaración de
group
en su Gemfile.
La respuesta a esta pregunta en particular en relación con el momento en que se publicó y la versión de Rails que se está utilizando es que el problema se debe a una
bundle update
y su versión de mysql2 se actualiza a 0.4.x que tiene un problema de incompatibilidad con el último ActiveRecord de Rails.
Nuevamente, tenga en cuenta que esta NO es la solución para las personas que usan versiones anteriores de Rails / ActiveRecord.
La solución rápida es simplemente especificar la versión de
mysql2
en su gemfile de la siguiente manera:
gem ''mysql2'', ''0.3.20''
La solución larga sería esperar a que cambie una actualización de ActiveRecord o algo en mysql2.
Si puede actualizar su versión de rails, cambie su Gemfile a esto y resolverá el problema sin degradar la versión de mysql2 gem:
gem ''rails'', ''4.2.6''
Solo una actualización más: la solución en la pregunta es correcta.
Vale la pena tomar nota del cuarto comentario:
Esto no es un error con mysql2, es un problema con el requisito del adaptador ActiveRecord: http://github.com/rails/rails/issues/21544 . Esto se soluciona en rails master: github.com/rails/rails/commit/…
Pude vincular
Rails 4.2.4
a la rama
4-2-stable
y hacerlo funcionar con el último
mysql2
:
gem ''rails'', ''~> 4.2.4'', git: "git://github.com/rails/rails.git", branch: ''4-2-stable''
gem ''tzinfo-data'', platforms: [:mingw, :mswin, :x64_mingw] #-> Rails 4.1+
#DB
gem ''mysql2''
Tuve el mismo problema, pero agregué la
source ''https://rubygems.org''
a la parte superior del problema resuelto del archivo gem.
Pasos:
agregue la
source ''https://rubygems.org''
a su archivo de gemas.
Comente la
mysql2 gem
y agregue la
gem ''mysql2'', ''~> 0.3.18''
Ejecutar
bundle install
prueba esto:
bundle update mysql2
este comando actualizará su gema ''mysql2'' a la última versión (debe ser 0.3.17 o superior) e iniciará su servidor rails.
Solo haz:
gem ''mysql2'', ''~> 0.3.18''
esta gema funciona con
rails version 4.xx
si instala
gem ''mysql2'', ''~> 0.4.0''
produce un error de carga de gem y causa problemas de compatibilidad