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.
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
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);