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 (6)

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.

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'

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


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'

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.





ruby-on-rails-4.2