Gem :: LoadError pour mysql2, mais il est déjà dans Gemfile

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

Cette erreur s'est produite lors du chargement des fichiers suivants:

active_record/base

C'est l'erreur que j'obtiens sur l'exécution du serveur de rails.

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

J'ai fait bundle installet j'ai essayé de redémarrer le serveur mais j'ai toujours l'erreur.

Mysoulisinseoul
la source
Avez-vous exécuté bundleaprès avoir ajouté le gem et redémarré le serveur?
Bachan Smruty
@BachanSmruty: Oui, je l'ai fait.
Mysoulisinseoul
Est-ce en cours de déploiement? Avez-vous courubundle install --deployment
j-dexx

Réponses:

247

Si vous rencontrez cette erreur lors de la mise à niveau vers les rails 4.2.4 (également avec les rails 4.1.5), essayez d'utiliser cette version de mysql2:

gem 'mysql2', '~> 0.3.18'

Apparemment, mysql2 n'est toujours pas compatible avec la nouvelle version des rails car les rails 4.2.4 sont assez nouveaux car je réponds à cette question le 8 septembre 2015, alors utilisez la ligne ci-dessus dans votre fichier Gem et exécutez:

bundle install 

Tu devrais être prêt à partir

Hassan Azimi
la source
2
dans le msyql2_adapter.rb, je trouve les codes ci-dessous: gem 'mysql2', '~> 0.3.13' require 'mysql2' cela pourrait être la raison pour laquelle la version 4.xx par défaut de mysql2 ne fonctionnera pas
Oscar Jiang
27

Cela a fonctionné pour moi lorsque j'ai spécifié une version de mysql2 gem avant la plus récente (0.4.0). Pour une raison quelconque, il y a un problème avec Rails 4.2.4 et cette gemme 0.4.0. Donc, pour résoudre le problème, je viens de spécifier la gemme précédente publiée: 0.3.20 et cela a bien fonctionné pour moi!

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

Vous pouvez vérifier toutes les versions de gemmes ici: https://rubygems.org/gems/mysql2/versions

rom5jp
la source
16

Changer pour

gem 'mysql2', '~> 0.3.18'

dans votre Gemfile.

Ce fil sur le mysql2 officiel de Github dit de le faire. Vous devez déclarer ce numéro de version si vous utilisez la version 4.xx

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

Puis cours bundle update mysql2.

suga_shane
la source
2
Je vous remercie! Pour être précis, vous ne voulez pas bundle updatecar cela mettra à jour toutes vos gemmes. La commande est bundle update mysql2. Cela peut sembler évident, mais ce n'est pas la bonne commande et pourrait avoir des conséquences inattendues. (Pour revenir de bundle update, exécuter git checkout -- Gemfile.lock)
Nick
8

J'ai eu la même erreur après une mise à niveau vers Rails 4.1 et j'ai réussi à la résoudre en mettant à jour mysql2. Exécutez ceci dans le dossier de votre application rails:

$ bundle update mysql2
valo
la source
8

Ce problème peut se produire si vous utilisez une version plus récente des rails> 4

Faites ces deux étapes simples, cela fonctionnera. Ouvrez votre Gemfile et trouvez la ligne ci-dessous

gem 'mysql2'

remplacez cette ligne par une version spécifique de mysql comme ci-dessous

gem 'mysql2', '~> 0.3.18'

Arrêtez maintenant le serveur et exécutez le bundle

bundle install

Redémarrez maintenant votre serveur. Cela devrait marcher.

rails s
Prabhakar Undurthi
la source
7

Étant débutant avec le rubis, je n'ai pas pu comprendre la gemme de ligne 'mysql2', '~> 0.3.18'

cela signifie simplement aller dans le dossier de votre projet rails et puis il y a une ligne pour mysql2 ce sera comme 0.4 * donc vous pouvez le changer en gem 'mysql2', '~> 0.3.18'

et comme nous avons une nouvelle définition, nous devons reconstruire la dépendance afin de faire cette simple commande comme expliqué sur l' installation du bundle supérieur

Salagar de Muaaz
la source
5

Il ne charge pas le gem mysql2 car la nouvelle version du gem mysql2 (0.4.1) est incapable de charger le mysql2_adaptor. Cela fonctionne pour moi.

gem 'mysql2', '~> 0.3.13'

et courir

bundle install
sushilprj
la source
2

J'ai eu la même erreur et c'est parce que Rails 4.1 nécessite au minimum la version 0.3.13 de mysql2, et le maximum compatible avec Windows est la version 0.3.11.

J'ai donc édité le fichier c:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\gems\activerecord-4.1.1\lib\active_record\connection_adapters\mysql2_adapter.rbet changé la ligne gem 'mysql2', '~> 0.3.13'en gem 'mysql2', '~> 0.3.11', et cela fonctionne jusqu'à présent.

Lev Lukomsky
la source
1

Il ne charge pas le gem mysql2 car la nouvelle version du gem mysql2 (> = 0.4.0) est incapable de charger le mysql2_adaptor. Pouvez-vous essayer ça?

gem 'mysql2', '~> 0.3.13'

J'espère que cela devrait fonctionner.

Neeraj Kumar
la source
0

J'ai résolu le problème, en installant le gem mysql2 local (gem install mysql2, bundle install) et en ajoutant la ligne suivante au Gemfile:

gem 'mysql2'

Définition de l'adaptateur mysql2 dans database.yml

adapter: mysql2

était également important!

atomiccoder
la source
0

Je suis tout nouveau sur Ruby on Rails et sur les sites Web, mais j'entends ce qui a fonctionné pour moi.

J'ai dû changer mon gemfile, gem 'mysql2' en gem 'mysql2', '~> 0.3.13' puis dans les rails j'ai tapé bundle install puis j'ai essayé les rails s et j'ai eu des erreurs alors j'ai essayé la mise à jour du bundle mysql2 puis dans les rails tapés rails s, et ça a marché

napper mat
la source
0

J'ai résolu le problème en installant le fichier libmysqlclient-dev. sudo aptitude installe libmysqlclient-dev et le bundle plus récent.

Fábio Coelho
la source
-1

J'ai déjà installé mysql2 0.4.5 mais cela me donnait cette erreur donc j'ai installé une autre version de mysql2 par:

gem installer mysql2 --version 0.3.20

J'espère que ceci résoudra votre problème.

Prashant Choudhary
la source