Dans mon gemfile j'ai:
gem 'mysql2'
Mon database.yml est comme suit:
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
J'ai exécuté à la fois bundle update
et bundle install
et mon Gemfile.lock montre mysql2.
Cependant, lorsque je lance rake db:migrate
, je l’obtiens à la fois sur mon ordinateur et sur le serveur de transfert:
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).
.....
Juste pour m'assurer qu'il n'y avait pas une mauvaise version de mysql2 ou quelque chose du genre, j'ai bundle clean --force
et exécuté bundle install
et bundle update
encore et quand j'exécute gem list
, je vois mysql2 (0.4.0)
et aucune autre version.
Toutes les idées seraient très appréciées.
C'est actuellement un problème avec Rails 4.1.x et 4.2.x, d'après ce rapport de bogue , il sera corrigé dans la prochaine version de Rails 4.2.x (crédit à dcorr dans les commentaires du lien).
En attendant, vous pouvez résoudre le problème en faisant passer la version 0.3.18 de mysql2 en ajoutant cette ligne à votre fichier gem:
gem 'mysql2', '~> 0.3.18'
Juste une mise à jour supplémentaire - la solution à la question est correcte.
Le 4ème commentaire mérite d'être noté:
Ce n'est pas un bug avec mysql2, c'est un problème avec l'exigence dans l'adaptateur ActiveRecord: http://github.com/Rails/rails/issues/21544 . Ceci est corrigé dans Rails master: https://github.com/Rails/rails/commit/5da5e3772c32593ecf2f27b8865e81dcbe3af692
J'ai pu lier Rails 4.2.4
à la branche 4-2-stable
et le faire fonctionner avec le dernier 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'
Il suffit de faire:
gem 'mysql2', '~> 0.3.18'
cette gemme fonctionne avec Rails version 4.x.x
si install gem 'mysql2', '~> 0.4.0'
, cela produira une erreur de chargement de gem et causera des problèmes de compatibilité
La réponse à cette question particulière par rapport au moment où elle a été publiée et à la version de Rails utilisée est que le problème provient de l'exécution d'un bundle update
et que votre version de mysql2 est mise à jour à la version 0.4.x, ce qui pose un problème d'incompatibilité avec le dernier Rails ActiveRecord.
Encore une fois, veuillez noter que ce n'est pas la solution pour les personnes utilisant des versions plus anciennes de Rails/ActiveRecord.
La solution rapide consiste simplement à spécifier la version mysql2
dans votre fichier gem comme suit:
gem 'mysql2', '0.3.20'
La solution longue serait d'attendre une mise à jour de ActiveRecord ou quelque chose à changer dans mysql2.
Si vous parvenez à mettre à niveau votre version de Rails, changez alors votre Gemfile pour résoudre le problème sans rétrograder la version de mysql2:
gem 'Rails', '4.2.6'
Cette question a été abordée ici: https://github.com/brianmario/mysql2/issues/950
Pour Rails 4.x, épinglez la gemme sur mysql2 '~> 0.4.0' pour éviter la mise à niveau 0.5.x.
Gemfile:
gem 'Rails', '4.2.8'
gem 'mysql2', '~> 0.4.0'
Puis lancez bundle update Rails mysql2
J'utilise actuellement mysql v 8.0.11
Cela se produit généralement quand il manque des paquets mysql sur votre machine. Avez-vous des erreurs de gem install mysql2
? Sur quel système d'exploitation travaillez-vous?
Si vous utilisez Debian ou Ubuntu, essayez Sudo apt-get install libmysqlclient-dev
.
Assurez-vous également que la gemme n'est pas placée dans une instruction group
dans votre Gemfile.
Avait le même problème, mais en ajoutant source 'https://rubygems.org'
au sommet du problème résolu du fichier gem.
Pas:
ajoutez source 'https://rubygems.org'
à votre fichier gem. Commentez mysql2 gem
et ajoutez gem 'mysql2', '~> 0.3.18'
Exécutez bundle install
essaye ça:
bundle update mysql2
cette commande mettra à jour votre gem 'mysql2' vers la dernière version (devrait être 0.3.17 ou supérieure) et démarrera votre serveur Rails.