2010-09-15 12 views
6

Ich versuche, eine lokale Sicherung der Daten von meiner Rails-App, die auf Heroku bereitgestellt wird, zu machen, und es treten Probleme auf. Ich folgte den Anweisungen hier: http://docs.heroku.com/taps und installierte Taps.Wie ziehe ich Heroku-Daten in eine lokale SQLite3-Datenbank? Probleme

Ich bekomme zwei Arten von Fehlern. Ich habe eine SQLite db lokal und versuchte Daten mit diesem Befehl ziehen:

(Sudo) Heroku db: pull sqlite: //Users/username/folder/testbackup.db

oder

(sudo) Heroku db: ziehen sqlite: // username: [email protected]/Users/username/folder/testbackup.db

aber so oder so bekomme ich diese:

fehlgeschlagen Datenbank verbinden: Sequel :: DatabaseConnectionError -> SQLite3 :: CantOpenException: nicht öffnen konnte Datenbank: unable

Datenbank-Datei, habe ich versucht, Alternativ öffnen lassen Taps automatische Erkennung der Entwicklung db in meiner App und neu schreiben, obwohl das ist nicht ganz das, was ich wollte. Dann beginne ich immer Fehler wie:

/opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:777:in report_activate_error': RubyGem version error: sequel(3.15.0 not ~> 3.13.0) (Gem::LoadError) from /opt/local/lib/ruby/site_ruby/1.8/rubygems.rb:211:in activate‘ von /opt/local/lib/ruby/site_ruby/1.8 /rubygems.rb:1056:in `gem‘ von /Library/Ruby/Gems/1.8/gems/taps-0.3.10/bin/schema:4

und schließlich

/System/Bibliothek/Frameworks/Ruby.framework/Versionen/1.8/usr/lib/ruby ​​/ edelsteine ​​/ 1.8/edelsteine ​​/ sqlite3-ruby-1.2.4/lib/sqlite3/errors.rb: 62: in `ch eck ': SQLite3 :: SQLException: Primärschlüssel muss eindeutig sein (Sequel :: Database)

Dank Tonnen im Voraus, es ist ziemlich wichtig, dass ich diese Datensicherung so bald wie möglich beginnen!

+0

FYI - Taps ist nicht unbedingt Datensicherung. Vielleicht möchten Sie "Bundles" überprüfen, da Heroku die Dinge sichert. – s84

+0

Haben Sie versucht, den Server oder das Skript/die Konsole hochzufahren, um zu sehen, ob Sie die Datenbank tatsächlich verwenden können, bevor Sie das Taps-Juwel ausprobieren? – s84

+0

Ich dachte, Taps war nur Datensicherung und Bundles war Datensicherung und Code-Backup. Da ich den ganzen Code auf GitHub habe, dachte ich mir, dass ich nur die Daten von der Site ziehen musste. Wie zum Starten des Servers - ist das nicht notwendig, weil es eine SQLite-Datenbank im Gegensatz zu MYSQL ist? – kateray

Antwort

10

Ein paar Probleme. Erstens ist Ihre Sequel-Verbindungszeichenfolge falsch. Versuchen

heroku db:pull sqlite:///Users/username/folder/testbackup.db 

Wenn Sie immer noch eine Ausnahme erhalten, kann es aufgrund einer Erlaubnis Problem sein, so stellen Sie sicher, dass Sie auf diesem Weg schreiben.

Ihr Rubygem-Versionsfehler liegt daran, dass die aktuelle Version von Taps Sequel 3.13.0 erfordert und Sie bereits 3.15.0 aktiviert haben. Sie müssen entweder 3.13.0 verwenden oder Sie müssen die Hapen-Edelstein-Spezifikation bearbeiten, um 3.15.0 zu verwenden.

Der PRIMARY KEY muss eindeutig sein ist eine SQLite-Ausnahme. Ohne den vollständigen Backtrace und Code ist es schwer zu erraten, warum es auftritt.

0

Mit dem SQLite3::SQLException: PRIMARY KEY must be unique (Sequel::DatabaseError) Problem, habe ich es gesehen, wenn Daten in die Heroku-Datenbank geschrieben werden, während der Pull in Bearbeitung ist. Scheint zu funktionieren, wenn ich sicherstelle, dass es keine Aktivitäten auf Heroku gibt.Das ist ein unwissenschaftlicher und möglicherweise rein zufälliger Ansatz, scheint aber für mich zu funktionieren.