Gem :: LoadError für mysql2 gem, aber es ist bereits in Gemfile

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

Dieser Fehler trat beim Laden der folgenden Dateien auf:

active_record/base

Dies ist der Fehler, den ich beim Ausführen des Rails-Servers erhalte.

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

Ich habe es getan bundle installund versucht, den Server neu zu starten, erhalte aber immer noch den Fehler.

Mysoulisinseoul
quelle
Haben Sie bundlenach dem Hinzufügen des Edelsteins ausgeführt und den Server neu gestartet?
Bachan Smruty
@ BachanSmruty: Ja, das habe ich getan.
Mysoulisinseoul
Ist dies im Einsatz? Haben Sie laufenbundle install --deployment
j-dexx

Antworten:

247

Wenn beim Upgrade auf Rails 4.2.4 (auch mit Rails 4.1.5) dieser Fehler auftritt, versuchen Sie, diese Version von mysql2 zu verwenden:

gem 'mysql2', '~> 0.3.18'

Anscheinend ist mysql2 noch nicht mit einer neueren Version von Rails kompatibel, da Rails 4.2.4 zum Zeitpunkt der Beantwortung dieser Frage durch mich am 8. September 2015 ziemlich neu ist. Verwenden Sie also die obige Zeile in Ihrer Gem-Datei und führen Sie Folgendes aus:

bundle install 

Du solltest gut gehen

Hassan Azimi
quelle
2
In der Datei msyql2_adapter.rb finde ich die folgenden Codes: gem 'mysql2', '~> 0.3.13' erfordern 'mysql2'. Dies könnte der Grund sein, warum die Standardversion von mysql2 4.xx nicht funktioniert
Oscar Jiang
27

Es hat bei mir funktioniert, als ich eine mysql2-Edelsteinversion vor der neuesten (0.4.0) angegeben habe. Aus irgendeinem Grund gibt es ein Problem mit Rails 4.2.4 und diesem Juwel 0.4.0. Um das Problem zu lösen, habe ich gerade das zuvor veröffentlichte Juwel angegeben: 0.3.20 und es hat gut für mich funktioniert!

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

Sie können alle Edelsteinversionen hier überprüfen: https://rubygems.org/gems/mysql2/versions

rom5jp
quelle
16

Ändern

gem 'mysql2', '~> 0.3.18'

in deiner Gemfile.

Dieser Thread auf dem offiziellen mysql2 Github sagt dazu. Sie müssen diese Versionsnummer deklarieren, wenn Sie Rails Version 4.xx sind

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

Dann renne bundle update mysql2.

suga_shane
quelle
2
Danke dir! Um genau zu sein, möchten Sie nicht, bundle updateda dies alle Ihre Edelsteine ​​aktualisiert. Der Befehl lautet bundle update mysql2. Könnte offensichtlich erscheinen, aber es ist der falsche Befehl und könnte unbeabsichtigte Konsequenzen haben. (Um zurückzukehren bundle update, laufen git checkout -- Gemfile.lock)
Nick
8

Ich habe den gleichen Fehler nach einem Upgrade auf Rails 4.1 erhalten und konnte ihn durch Aktualisierung von mysql2 beheben. Führen Sie dies in Ihrem Rails-App-Ordner aus:

$ bundle update mysql2
Valo
quelle
8

Dieses Problem kann auftreten, wenn Sie eine neuere Version von Rails> 4 verwenden

Führen Sie diese beiden einfachen Schritte aus, es wird funktionieren. Öffne deine Gemfile und finde die folgende Zeile

gem 'mysql2'

Ersetzen Sie diese Zeile durch eine bestimmte MySQL-Version wie unten

gem 'mysql2', '~> 0.3.18'

Stoppen Sie nun den Server und führen Sie das Bundle aus

bundle install

Starten Sie nun Ihren Server neu. Es sollte funktionieren.

rails s
Prabhakar Undurthi
quelle
7

Als Anfänger des Rubins konnte ich die Linie 'mysql2', '~> 0.3.18' nicht herausfinden.

es bedeutet einfach, dass Sie zu Ihrem Rails-Projektordner gehen und dann gibt es eine Zeile für mysql2, die wie 0,4 * aussieht, sodass Sie sie ändern können beträgt, gem 'mysql2', '~> 0,3,18' ändern können.

und da wir eine neue Definition haben, müssen wir die Abhängigkeit neu erstellen, um diesen einfachen Befehl auszuführen, wie in der Installation des oberen Bundles erläutert

Muaaz Salagar
quelle
5

Mysql2 gem wird nicht geladen, da die neue Version von mysql2 (0.4.1) gem den mysql2_adaptor nicht laden kann. Das funktioniert bei mir.

gem 'mysql2', '~> 0.3.13'

und Renn

bundle install
sushilprj
quelle
2

Ich hatte den gleichen Fehler und dies liegt daran, dass für Rails 4.1 mindestens mysql2 Version 0.3.13 erforderlich ist und maximal Version 0.3.11 mit Windows kompatibel ist.

Also habe ich die Datei bearbeitet c:\RailsInstaller\Ruby1.9.3\lib\ruby\gems\1.9.1\gems\activerecord-4.1.1\lib\active_record\connection_adapters\mysql2_adapter.rbund die Zeile gem 'mysql2', '~> 0.3.13'in geändert gem 'mysql2', '~> 0.3.11', und es funktioniert soweit.

Lev Lukomsky
quelle
1

Der mysql2-Edelstein wird nicht geladen, da die neue Version des mysql2-Gems (> = 0.4.0) den mysql2_adaptor nicht laden kann. Kannst du das versuchen?

gem 'mysql2', '~> 0.3.13'

Hoffentlich sollte es funktionieren.

Neeraj Kumar
quelle
0

Ich habe das Problem gelöst, indem ich mysql2 gem local installiert habe (gem install mysql2, bundle install) und der Gemfile die folgende Zeile hinzugefügt habe:

gem 'mysql2'

Festlegen des mysql2-Adapters in database.yml

adapter: mysql2

war auch wichtig!

Atomcodierer
quelle
0

Ich bin brandneu bei Ruby on Rails und Websites, höre aber, was für mich funktioniert hat.

Ich musste meine gemfile ändern, gem 'mysql2' in gem 'mysql2', '~> 0.3.13' Schienen s, und es hat funktioniert

Matt Napper
quelle
0

Ich habe das Problem gelöst und den libmysqlclient-dev installiert. sudo aptitude installiert libmysqlclient-dev und führt später das Bundle aus.

Fábio Coelho
quelle
-1

Ich habe zuvor mysql2 0.4.5 installiert, aber das gab mir diesen Fehler, so dass ich eine andere Version von mysql2 installiert habe durch:

gem install mysql2 --version 0.3.20

Hoffe das löst dein Problem.

Prashant Choudhary
quelle