Auf Heroku pushen, ohne die Datenbank zu überschreiben

Lesezeit: 2 Minuten

Benutzer-Avatar
Yrk

Ich habe eine etwas einfachere Frage, aber da ich neu bei Heroku und dem gesamten Git-Konzept bin, bin ich etwas verwirrt. Ich habe das Problem ehrlich gegoogelt, aber keine ausreichende Antwort gefunden. Vielleicht können Sie helfen.

Ich habe gerade angefangen, eine Flask-App zu programmieren, basierend auf der Flaskr-Beispielich habe es auf Heroku geschoben, also habe ich die verwendet Heroku-Python-Leitfaden und ich pushe Änderungen mit den folgenden Zeilen von meinem Terminal (auf Mac):

$ git add -A
$ git commit -m "Pushing to Heroku"
$ git push -f heroku

Jedes Mal, wenn ich mit diesen Zeilen einen Push durchführe, ist meine Datenbank zur Produktion wieder leer. Aber ich möchte nicht, dass das ständig passiert. Was kann ich tun? Vielleicht wisst ihr was darüber.

Benutzer-Avatar
linkindy

Das passiert, weil SQLite ein ist Schlecht Wahl für Heroku. Das Folgende wurde entnommen Herokus Dokumente:

SQLite wird im Arbeitsspeicher ausgeführt und sichert seinen Datenspeicher in Dateien auf der Festplatte. Während diese Strategie für die Entwicklung gut funktioniert, hat Herokus Cedar-Stack ein kurzlebiges Dateisystem. Sie können darauf schreiben und daraus lesen, aber der Inhalt wird regelmäßig gelöscht. Wenn Sie SQLite auf Heroku verwenden würden, würden Sie Ihre gesamte Datenbank mindestens einmal alle 24 Stunden verlieren.

Selbst wenn die Festplatten von Heroku dauerhaft laufen würden, wäre SQLite immer noch nicht gut geeignet. Da SQLite nicht als Dienst ausgeführt wird, würde jeder Dyno eine separate laufende Kopie ausführen. Jede dieser Kopien benötigt einen eigenen festplattengestützten Speicher. Dies würde bedeuten, dass jeder Prüfstand, der Ihre App mit Strom versorgt, einen anderen Datensatz haben würde, da die Festplatten nicht synchronisiert sind.

Anstatt SQLite auf Heroku zu verwenden, können Sie Ihre App für die Ausführung auf Postgres konfigurieren.

Einfach modifizieren init_db-Funktion um zu prüfen, ob die Tabelle mit Einträgen bereits existiert: Wenn dies der Fall ist, laden Sie schema.sql nicht

  • Das ist eine Möglichkeit, ja, aber ich wollte wissen, ob es eine Möglichkeit in Git gibt. Aber danke!

    – Yrk

    7. März 2014 um 10:35 Uhr

1011980cookie-checkAuf Heroku pushen, ohne die Datenbank zu überschreiben

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy