In meiner Gemfile habe ich:
gem 'mysql2'
Meine database.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 beide ausgeführt bundle update
und bundle install
und meine Gemfile.lock zeigt mysql2.
Beim Ausführen wird rake db:migrate
dies jedoch sowohl auf meinem Computer als auch auf dem Staging-Server angezeigt:
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).
.....
Nur um sicherzugehen war es keine schlechte Version von mysql2 oder etwas, das habe ich bundle clean --force
und lief bundle install
und bundle update
immer wenn ich laufe gem list
ich sehe mysql2 (0.4.0)
und keine anderen Versionen.
Irgendwelche Ideen wären sehr dankbar.
LÖSUNG
Derzeit handelt es sich um ein Problem mit Rails 4.1.x und 4.2.x. Gemäß diesem Fehlerbericht wird es in der nächsten Version von Rails 4.2.x behoben (Gutschrift an 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'
quelle
bundle update mysql2
mysql2 (0.4.0)
ist die neueste Version von Ruby Gems und sie ist bereits installiert.gem 'mysql2', '~> 0.3.18'
in Gemfile.Antworten:
Nur ein weiteres Update - die Lösung in der Frage ist richtig.
Der 4. Kommentar ist erwähnenswert:
Ich konnte mich
Rails 4.2.4
an die4-2-stable
Filiale binden und sie mit der neuesten Version zum Laufen bringenmysql2
:quelle
Mach einfach:
gem 'mysql2', '~> 0.3.18'
Dieses Juwel funktioniert mitrails version 4.x.x
Bei der Installation tritt ein
gem 'mysql2', '~> 0.4.0'
Fehler beim Laden des Gems auf und es treten Kompatibilitätsprobleme aufquelle
Dieses Problem wurde hier behoben : https://github.com/brianmario/mysql2/issues/950
Gemfile:
Dann renne
bundle update rails mysql2
Ich verwende derzeit MySQL v 8.0.11
quelle
Die Antwort auf diese spezielle Frage in Bezug auf den Zeitpunkt der Veröffentlichung und die verwendete Version von Rails lautet, dass das Problem durch a verursacht wird
bundle update
und Ihre mysql2-Version auf 0.4.x aktualisiert wird, was ein Inkompatibilitätsproblem mit dem neuesten Rails ActiveRecord aufweist.Bitte beachten Sie auch hier, dass dies NICHT die Lösung für Benutzer ist, die ältere Versionen von Rails / ActiveRecord verwenden.
Die schnelle Lösung besteht darin, die
mysql2
Version in Ihrer Gemfile einfach wie folgt anzugeben :gem 'mysql2', '0.3.20'
Die lange Lösung wäre, darauf zu warten, dass sich entweder ein Update auf ActiveRecord oder etwas in mysql2 ändert.
quelle
Wenn Sie in der Lage sind, Ihre Rails-Version zu aktualisieren, ändern Sie Ihr Gemfile in dieses und es wird das Problem lösen, ohne die mysql2-Gem-Version herunterzustufen:
quelle
Als Anfänger war ich verwirrt darüber, wie das geht, also habe ich nur eine Testprüfung durchgeführt und schließlich meinen Server zum Laufen gebracht. Hier ist, wie ich ihn zum Laufen gebracht habe.
Gehen Sie in die Datei des Arbeitsverzeichnisses ("work") und von dort in die Datei der von Ihnen erstellten App ("sample_app"), in der mysql 2 installiert ist. Gehen Sie zur gem-Datei ("Gemfile") und bearbeiten Sie gem 'mysql2' zu gem 'mysql2', '~> 0.3.18'
Gehen Sie nun zurück zu cmd und führen Sie den Befehl "bundle install" aus.
Daher sollte das Verzeichnis zum Bearbeiten der Datei unter Berücksichtigung der oben genannten Dateien in Klammern sein. "c \ work \ sample_app \ Gemfile"
Ich hoffe, ich war etwas hilfreich.
quelle
Dies geschieht normalerweise, wenn Sie einige MySQL-Pakete auf Ihrem Computer vermissen. Erhalten Sie Fehler von
gem install mysql2
? An welchem Betriebssystem arbeiten Sie?Wenn auf Debian oder Ubuntu versuchen
sudo apt-get install libmysqlclient-dev
.group
Stellen Sie außerdem sicher, dass der Edelstein nicht in einer Anweisung in Ihrer Gemfile enthalten ist.quelle
Hatte das gleiche Problem, aber das Hinzufügen
source 'https://rubygems.org'
zum oberen Rand der Gem-Datei löste das Problem.Schritte:
füge
source 'https://rubygems.org'
es deiner Edelsteindatei hinzu. Auskommentierenmysql2 gem
undgem 'mysql2', '~> 0.3.18'
Run hinzufügenbundle install
quelle
Versuche dies:
Dieser Befehl aktualisiert Ihr 'mysql2'-Juwel auf die neueste Version (sollte 0.3.17 oder höher sein) und startet Ihren Rails-Server.
quelle