it-swarm.com.de

Rails 4 - Gem :: LoadError: 'mysql2' für Datenbankadapter wurde angegeben, der gem wird jedoch nicht geladen

In meinem Gemfile habe ich:

gem 'mysql2'

Meine Datenbank.yml lautet wie folgt:

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

Ich habe sowohl bundle update als auch bundle install ausgeführt und meine Gemfile.lock zeigt mysql2.

Wenn ich jedoch rake db:migrate starte, bekomme ich dies sowohl auf meinem Computer als auch auf dem Staging-Server:

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).
.....

Um sicherzugehen, dass es keine schlechte Version von mysql2 oder so etwas gab, habe ich bundle clean --force ausgeführt und bundle install und bundle update erneut ausgeführt. Wenn ich gem list ausführen, sehe ich mysql2 (0.4.0) und keine anderen Versionen.

Irgendwelche Ideen würden am meisten geschätzt.


LÖSUNG

Es ist derzeit ein Problem mit Rails 4.1.x und 4.2.x, laut diesem Fehlerbericht wird es in der nächsten Version von Rails 4.2.x behoben (Gutschrift dcorr in den Kommentaren für den Link).

In der Zwischenzeit können Sie das Problem beheben, indem Sie ein Downgrade auf Version 0.3.18 von mysql2 durchführen, indem Sie diese Zeile zu Ihrer Gem-Datei hinzufügen:

gem 'mysql2', '~> 0.3.18'
148
newUserNameHere

Nur ein weiteres Update - die Lösung in der Frage ist richtig.

Der vierte Kommentar lohnt sich zu beachten:

Dies ist kein Fehler in mysql2, sondern ein Problem mit der Anforderung in den ActiveRecord-Adapter: http://github.com/Rails/rails/issues/21544 . Dies ist in Rails Master behoben: https://github.com/Rails/rails/commit/5da5e3772c32593ecf2f27b8865e81dcbe3af692

Ich konnte Rails 4.2.4 an den 4-2-stable-Zweig binden und ihn mit dem neuesten mysql2 zum Laufen bringen:

 enter image description here

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'
47
Richard Peck

Mach einfach:

gem 'mysql2', '~> 0.3.18' Dieser Edelstein funktioniert mit Rails version 4.x.x

bei Installation von gem 'mysql2', '~> 0.4.0' wird ein Fehler beim Laden der Gems verursacht und es treten Kompatibilitätsprobleme auf

66
Kaleem Ullah

Die Antwort auf diese spezielle Frage in Bezug auf den Zeitpunkt, zu dem sie veröffentlicht wurde und die Version von Rails verwendet wird, besteht darin, dass das Problem dadurch verursacht wird, dass bundle update ausgeführt wird und Ihre mysql2-Version auf 0.4.x aktualisiert wird, was zu einem Inkompatibilitätsproblem mit dem neuesten Rails ActiveRecord führt.

Bitte beachten Sie, dass dies NICHT die Lösung für Benutzer ist, die ältere Versionen von Rails/ActiveRecord verwenden.

Die schnelle Lösung besteht darin, einfach die mysql2-Version in Ihrem gemfile wie folgt anzugeben:

gem 'mysql2', '0.3.20'

Die lange Lösung wäre, zu warten, bis sich entweder ein Update für ActiveRecord oder etwas in mysql2 ändert.

8

Wenn Sie Ihre Rails-Version aktualisieren können, ändern Sie Ihre Gemfile-Datei so, dass das Problem gelöst wird, ohne dass die mysql2 gem-Version heruntergefahren wird:

gem 'Rails', '4.2.6'
7
Omac

Als kompletter Anfänger war ich verwirrt, wie ich das machen soll, also habe ich einfach eine Testprüfung durchgeführt und endlich meinen Server zum Laufen gebracht.

gehen Sie in die Datei des Arbeitsverzeichnisses ("work") und von dort in die Datei der von Ihnen erstellten App ("sample_app"), auf der mysql 2 installiert ist. Gehen Sie zur gem-Datei ("gemfile"). edit gem 'mysql2' bis gem 'mysql2', '~> 0.3.18'

gehen Sie jetzt zurück zu cmd und führen Sie den Befehl "bundle install" aus.

das Verzeichnis, in dem die Datei bearbeitet werden soll, unter Berücksichtigung der oben genannten Dateien in Klammern, sollte ..__ sein. "c\work\sample_app\Gemfile"

ich hoffe, ich war etwas hilfreich.

5
avinash v p

Dieses Problem wurde hier angesprochen: https://github.com/brianmario/mysql2/issues/950

Bei Rails 4.x muss der Edelstein an mysql2 '~> 0.4.0' angehängt werden, um das 0.5.x-Upgrade zu vermeiden.

Gemfile:

gem 'Rails', '4.2.8'
gem 'mysql2', '~> 0.4.0'

Dann bundle update Rails mysql2 ausführen

Ich verwende derzeit mysql v 8.0.11

5
Abram

Dies ist normalerweise der Fall, wenn auf Ihrem Computer einige mysql-Pakete fehlen. Bekommen Sie Fehler von gem install mysql2? An welchem ​​Betriebssystem arbeitest du gerade? 

Wenn Sie Debian oder Ubuntu verwenden, versuchen Sie Sudo apt-get install libmysqlclient-dev.

Stellen Sie außerdem sicher, dass sich der Edelstein nicht in einer group-Anweisung in Ihrem Gemfile befindet.

4
The F

Hatte dasselbe Problem, aber source 'https://rubygems.org' wurde am oberen Rand der gem-Datei hinzugefügt.

Schritte:

füge source 'https://rubygems.org' zu deiner gem-Datei hinzu. Kommentieren Sie mysql2 gem und fügen Sie gem 'mysql2', '~> 0.3.18' .__ hinzu. Führen Sie bundle install aus.

1
Mr94

versuche dies:

bundle update mysql2

dieser Befehl aktualisiert Ihren 'mysql2' gem auf die neueste Version (sollte 0.3.17 oder höher sein) und startet Ihren Rails-Server.

0
mmike