Operations Memorandum in Django + PostgreSQL für mich Es ist nicht der richtige Weg, und es sollte auf einfache Weise geschehen. Beschrieben, dass es auch eine solche Methode gibt.
Die Richtigkeit des Verfahrens kann nicht garantiert werden.
Wenn Sie das Modell in Django ändern In der von allen gemeinsam genutzten Verifizierungsumgebung Entsprechen Sie nach dem Anwenden der Migrationsdatei.
Es ist jedoch ein entsprechendes Verfahren für diejenigen, die Schwierigkeiten haben, zusätzlichen Code zu schreiben.
Vorbereitung der Speicherzieldatenbank
$ createdb targetdb_evate;
Trennen Sie die mit PostgreSQL verbundene Sitzung. (Natürlich nach Bestätigung, dass keine Operationen durchgeführt wurden)
Überprüfen Sie vorhandene Sitzungen
$ psql
postgres=# select pid, datname from pg_stat_activity;
Geben Sie die mit dem obigen Befehl bestätigte PID an und lösen Sie die folgende SQL aus.
Sitzung trennen
postgres=# select pg_terminate_backend($pid) from pg_stat_activity;
Von der Zieldatenbank (targetdb) zur gespeicherten Zieldatenbank (targetdb_evade) Sichern Sie Ihre Daten.
Datenbanksicherung
$ pg_dump -Ft targetdb | pg_restore -d targetdb_evade
Wenn noch Sitzungen vorhanden sind, schlägt dies hier fehl.
Wenden Sie die Django-Migration auf geeignete Weise an.
Migration anwenden
$ python manage.py migrate
Überprüfen Sie nach der Anwendung den Vorgang und führen Sie verschiedene Tests durch.
Kehren Sie vor der Migration aus der Speicherzieldatenbank in den Status zurück ** Vorhandene Sitzung trennen ** Schritte wiederholen, um sie zu wiederholen Trennen Sie alle Sitzungen.
Löschen Sie die auf die Migration angewendete Datenbank (targetdb) und Benennen Sie die gespeicherte Datenbank (targetdb_evade) um und Sie sind fertig.
Rückkehr vom Backup
$ psql
postgres=# drop database targetdb;
postgres=# alter database targetdb_evade rename to targetdb;
Recommended Posts