Flask-Migrate ne termine pas la mise à niveau de Flask db

Aperçu

J'expliquerai la solution lorsque le traitement est obstrué par la sortie de console suivante lors de l'exécution de flask db upgrade à l'aide de Flask-Migrate. Dans cette situation, vous ne pouvez pas quitter le processus avec Ctrl + C, et même si vous fermez le terminal, les modifications du schéma de base de données ne seront pas reflétées.

 $ flask db upgrade
INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO  [alembic.runtime.migration] Will assume transactional DDL.
INFO  [alembic.runtime.migration] Running upgrade 576e5f4a0fe7 -> 2b28fe44cc94, empty message

La cause est probablement un processus obstrué, qui tue le processus incriminé. C'est presque la même chose, mais je vais vous montrer comment résoudre 4 modèles. Étant donné que 2 à 4 n'ont pas été vérifiés, il peut ne pas être possible de le résoudre.

Méthode 1 (tuer le processus du terminal)

Tuez le processus sur le terminal. Lorsque vous exécutez la commande ps, une liste des processus en cours est affichée, vous pouvez donc y trouver le processus correspondant et le terminer de force avec la commande kill.

##Examiner le processus en cours d'exécution de postgres
ps aux | grep postgres
##Terminer le processus correspondant
kill <<ID de processus>> # ex) kill 12345

Méthode 2 (terminer le processus de PostgreSQL)

Faites-le sur postgres. Vous ne pourrez peut-être pas mettre fin au processus de cette manière.

##Examiner le processus verrouillé
SELECT * FROM pg_locks;  #Le nombre dans la colonne pid est l'ID de processus

##Terminer le processus
SELECT pg_cancel_backend(ID de processus);

Méthode 3 (redémarrer postgresql)

Méthode 4 (redémarrer le terminal)

Recommended Posts

Flask-Migrate ne termine pas la mise à niveau de Flask db
Tutoriel Flask # 3 ~ DB Linkage ~