ruby on rails - sqlite3(~> 1.3.6) kann nicht aktiviert werden, da sqlite3-1.4.0 bereits aktiviert ist




ruby-on-rails (4)

Das Problem wird durch Active Record verursacht, bei dem die Version von sqlite3 gem eingeschränkt ist. Im Fall von Rails 5.2.2 (aktuellste stabile Version zum Zeitpunkt, an dem ich diese Antwort schreibe) ist dies beispielsweise ~> 1.3.6 . Diese Einschränkung wird jedoch nicht in gemspec angegeben, sondern in einer Quelldatei, die die Adapterklasse enthält . Infolgedessen ist sich Bundler dessen nicht bewusst und installiert die in Konflikt stehende Version 1.4.0 von sqlite3 gem.

Die gute Nachricht ist, dass Fix bereits in die Wartungszweige von Master und Rails 5.2 (und möglicherweise auch in andere) integriert wurde und in 5.2.3 aufgenommen werden sollte.

Im Moment können Sie eine der folgenden Aktionen ausführen:

  • Füge die Einschränkung sqlite3 zu deiner Gemdatei hinzu: gem 'sqlite3', '~> 1.3.6'
  • Installieren Sie Active Record von einem Zweig mit dem Namen 5-2-stable .

Ich benutze Ubuntu und stoße bei der Verwendung von db: migrate for ruby ​​project auf ein Problem.

rails aborted!
LoadError: Error loading the 'sqlite3' Active Record adapter. Missing a gem it depends on? can't activate sqlite3 (~> 1.3.6), already activated sqlite3-1.4.0. Make sure all dependencies are added to Gemfile.
/home/juan/odin_on_rails/RailsaAPP/bin/rails:9:in `<top (required)>'
/home/juan/odin_on_rails/RailsaAPP/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'

Caused by:
Gem::LoadError: can't activate sqlite3 (~> 1.3.6), already activated sqlite3-1.4.0. Make sure all dependencies are added to Gemfile.
/home/juan/odin_on_rails/RailsaAPP/bin/rails:9:in `<top (required)>'
/home/juan/odin_on_rails/RailsaAPP/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:migrate => db:load_config
(See full trace by running task with --trace)

Es sieht so aus, als ob sich die sqlite3-Version im System von der in der Anwendung installierten unterscheidet. In diesem Fall können Sie eine Gem-Version für Ihre App aktualisieren:

bundle update sqlite3

Oder ändern Sie die Gem-Version in Gemfile:

gem 'sqlite3', '~> 1.4'

Ich hatte heute ein ähnliches Problem. Hier ist, was für mich gearbeitet hat. Ich habe versucht, Michaels Ansatz zu verwenden, aber einen ähnlichen Fehler erhalten.

Also entfernte ich stattdessen den Edelstein, von dem ich dachte, dass er mir einen Fehler verursacht, indem ich gem uninstall sqlite3 -v 1.4.0

und stattdessen in meiner Gem-Datei verwendet. gem 'sqlite3', '~> 1.3.6' das bundle update und es hat wie ein Zauber für mich funktioniert.


Keine der Lösungen hat bei mir funktioniert, daher habe ich den Fehler verfolgt und die Verbindungsadapter gefunden

Ort:

C:\Ruby\lib\ruby\gems\2.5.0\gems\activerecord-5.2.2\lib\active_record\connection_adapters\

Datei:

sqlite3_adapter.rb

geändert

gem "sqlite3", "~> 1.3.6"

zu

gem "sqlite3", "~> 1.4.0"

Ich habe meine Webseite aktualisiert und alles funktioniert !!!

Meine Umgebung

Windows 10
Ruby : 2.5.3-p105
Rails: 5.2.2