Mémorandum d'opération dans Django + PostgreSQL pour moi Ce n'est pas la bonne façon de procéder et cela devrait être fait de manière simple. Décrit qu'il existe également une telle méthode.
L'exactitude de la procédure n'est pas garantie.
Si vous changez de modèle dans Django Dans l'environnement de vérification partagé par tous Correspondent après l'application du fichier de migration.
Cependant, c'est une procédure correspondante pour ceux qui ont du mal à écrire du code supplémentaire.
--Préparer la base de données de destination de sauvegarde pour la base de données cible
Préparation de la base de données de destination de sauvegarde
$ createdb targetdb_evate;
Déconnectez la session connectée à PostgreSQL. (Bien sûr, après avoir confirmé qu'aucune opération n'a été effectuée)
Vérifier les sessions existantes
$ psql
postgres=# select pid, datname from pg_stat_activity;
Spécifiez le pid confirmé par la commande ci-dessus et lancez le SQL suivant.
Déconnecter la session
postgres=# select pg_terminate_backend($pid) from pg_stat_activity;
De la base de données cible (targetdb) à la base de données de destination de sauvegarde (targetdb_evade) Sauvegardez vos données.
Sauvegarde de la base de données
$ pg_dump -Ft targetdb | pg_restore -d targetdb_evade
S'il reste des sessions, cela échouera ici.
Appliquez la migration Django de manière appropriée.
Appliquer la migration
$ python manage.py migrate
Après l'application, vérifiez le fonctionnement et exécutez divers tests.
Revenir à l'état avant la migration à partir de la base de données de destination d'enregistrement ** Déconnectez la session existante ** Répétez les étapes pour répéter Déconnectez toutes les sessions.
Supprimez la base de données appliquée à la migration (targetdb) et Renommez la base de données enregistrée (targetdb_evade) et vous avez terminé.
Retour de sauvegarde
$ psql
postgres=# drop database targetdb;
postgres=# alter database targetdb_evade rename to targetdb;