Ich habe eine Django-Anwendung, die eine große Datenmenge in ihren Modellen speichert. Das Problem ist, dass bei jeder Bereitstellung auf Heroku, auch wenn es sich um eine kleine Änderung handelt, die Remote-Datenbank mit den korrekten Daten mit der lokalen Datenbank mit Dummy-Daten überschrieben wird.
Szenario:
Ich habe eine db-Datei my_db
was abgelegen ist. Wenn ich jetzt zu Heroku drücke, habe ich gerade git add
> git commit
nur die Dateien mit den Änderungen und nicht das gesamte Projekt. Mein Problem liegt in der Tatsache, dass die entfernte Datenbank irgendwie immer noch mit lokalen Daten überschrieben wird.
Gibt es eine Möglichkeit, dies zu verhindern?
Heroku bietet kein persistentes Dateisystem.
Die meisten Heroku-Anwendungen, an denen ich gearbeitet habe, verwenden PostgreSQL für ihre Datenbank, daher ist dies kein Problem. Aber SQLite ist nur eine Datei, die sich irgendwo in einem Verzeichnis befindet, sodass jedes Mal, wenn Sie Ihre Datenbank bereitstellen, verloren geht.
Die einfachste Lösung ist wahrscheinlich die Migration von SQLite zu PostgreSQL, das von Heroku (und in Django) sehr gut unterstützt wird und nicht bei jeder Bereitstellung Daten verliert.
Wenn Sie fest zu SQLite verpflichtet sind, haben Sie möglicherweise einige andere Optionen:
- Sichern Sie Ihre Datenbankdatei vor jedem Push und stellen Sie sie nach dem Push wieder her.
- Fügen Sie Ihre Produktionsdatenbank zu Ihrem Git-Repository hinzu, damit sie zusammen mit Ihrer Anwendung bereitgestellt wird (beachten Sie, dass ich dies nicht empfehle).
- Viele Benutzer Verwenden Sie Amazon S3, um andere Arten von Assets zu speichern. Möglicherweise können Sie ein ähnliches Verfahren mit Ihrer Datenbank verwenden, obwohl ich vermute, dass dies einige sehr erhebliche Sicherheitsrisiken mit sich bringen wird.
Sie sollten die db-Datei hinzufügen .gitignorieren
10027400cookie-checkVerhindern, dass Django SQLite-Datenbank beim Pushen nach Heroku überschrieben wirdyes