Ich habe eine Rails-App, deren Datenbanken sich in SQLite befinden (Entwickler und Produktion). Da ich zu Heroku wechsle, möchte ich meine Datenbank in PostgreSQL konvertieren.
Wie auch immer, ich habe gehört, dass die lokale Entwicklungsdatenbank nicht von SQLite geändert werden muss, also muss ich das nicht ändern. Wie gehe ich jedoch vor, um die Produktionsumgebung von SQLite auf PostgreSQL zu ändern?
Hat das schon mal jemand gemacht und kann helfen?
PS Ich bin mir nicht sicher, wie genau dieser Prozess heißt, aber ich habe von der Migration der Datenbank von SQLite nach PostgreSQL gehört. Muss das getan werden?
ruby-on-rails
database
sqlite
postgresql
heroku
Vasseurth
quelle
quelle
Antworten:
Sie können Ihre database.yml in diese ändern, anstatt die sofort einsatzbereite SQLite zu verwenden:
quelle
Die folgenden Schritte haben bei mir funktioniert. Es nutzt die Hähne Juwel, erstellt von Heroku und in Ryan Bates Railscast # 342 erwähnt. Es gibt ein paar Schritte, aber es hat perfekt funktioniert (sogar Daten wurden korrekt migriert), und es war weitaus einfacher als die Oracle-> DB2- oder SQL Server-> Oracle-Migrationen, die ich in der Vergangenheit durchgeführt habe.
Beachten Sie, dass SQLite keine Benutzer-ID oder kein Kennwort hat, für das Taps-Juwel jedoch etwas erforderlich ist. Ich habe gerade die Literale "Benutzer" und "Passwort" verwendet.
Erstellen Sie den Postgres-Datenbankbenutzer für die neuen Datenbanken
BEARBEITEN - Befehl unten aktualisiert - verwenden Sie diesen stattdessen
Erstellen Sie die erforderlichen Datenbanken
Aktualisieren Sie die Gemfile
Aktualisieren Sie database.yml
Starten Sie den Taps-Server in der SQLite-Datenbank
Migrieren Sie die Daten
Starten Sie den Rails-Webserver neu
Bereinigen Sie die Gemfile
quelle
Da Sie zu Heroku wechseln, können Sie dazu Taps verwenden:
Dadurch werden Ihre lokalen SQLite-Entwicklungsdaten in die Produktion übertragen, und Heroku wird automatisch für Sie in Postgres konvertiert.
Dies sollte auch funktionieren, um eine Produktions-SQLite-Datenbank nach Heroku zu verschieben, wird jedoch nicht getestet.
quelle
Sie müssen auch die Zeile " gem 'pg' " zu Ihrer gemfile hinzufügen, wobei 'pg' das aktuelle Postgres-Juwel für Rails ist.
quelle
Aktualisieren Sie einfach die Datei config / database.yml:
Folgendes wird beim Ausführen generiert:
Fügen Sie dies auch Ihrem Gemfile hinzu:
quelle
Jetzt ist es mit dem einzigen Befehl einfach geworden
quelle
Nachdem ich den Edelstein
'sqlite3
durch den Edelsteinpg
in der Edelsteindatei ersetzt hatte, bekam ich ihn immer wieder,sqlite3 error
wenn ich zum Heroku-Meister drückte, weil ich vergessen hatte, die aktualisierte Edelsteindatei festzuschreiben. Einfach das Folgende zu tun löste dieses Problem:quelle
Aktualisieren Sie einfach Ihre datatbase.yml
Wir verwenden Schienen und die grundlegenden Standards sollten wie DRY, Konvention über Konfiguration usw. befolgt werden. Daher wiederholen wir im obigen Code nicht denselben Code immer wieder.
quelle
Es wurde über mir erwähnt, aber ich habe nicht genug Ruf als Lurker, um es zu verbessern. In der Hoffnung, etwas mehr Aufmerksamkeit für Rails-Neulinge zu erregen, die diese Antwort lesen:
^^^ Dies ist ein Schlüsselelement zusätzlich zu der Datei database.yml, die in der ausgewählten Antwort beschrieben ist, um Ihre Rails-App nach Postgres zu migrieren.
quelle
So habe ich mein Setup. Wenn Sie nur MRT und nicht Jruby verwenden, können Sie die Logik in den Adaptereinstellungen überspringen.
quelle
Sie können Folgendes versuchen:
sqlite3 development.db .dump | psql dbname username
oder versuchen Sie es mit sqlitetopgscript: http://trac-hacks.org/browser/sqlitetopgscript/0.10/sqlite2pg
quelle
Eine mögliche Lösung (nicht für Heroku) ist die Verwendung von yaml.db von:
http://www.railslodge.com/plugins/830-yaml-db
quelle
Heute hatte ich das gleiche Problem. Ich arbeite an Rails 4.2.8. Die Lösung bestand darin, in meinem Fall die pg gem-Version anzugeben
0.18.4
.quelle