ruby-on-rails ruby-on-rails-4 ruby-on-rails-4.1 mysql2 ruby-on-rails-4.2

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