1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Flask-Migrateでflask db upgradeが終わらない

Last updated at Posted at 2019-12-01

概要

Flask-Migrateを使用してflask db upgradeを実行した際に下記のコンソール出力がされたまま処理が詰まってしまった場合の解決方法を説明します。
この状況だとCtrl+Cで処理を抜けることもできず、ターミナルを閉じてもDBスキーマの変更は反映されないままです。

 $ 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

原因は、おそらく処理が詰まっていることなので原因となるプロセスを強制終了します。
だいたい同じですが4パターン解決方法を紹介します。2~4については未検証なので、もしかしたら解決できないかもしれないです。

方法1(ターミナルからプロセスを強制終了する)

ターミナル上で該当のプロセスを強制終了します。
psコマンドを実行すると実行中のプロセス一覧が表示されるので、その中から該当のプロセスを見つけkillコマンドで強制終了することができます。

## postgresが実行しているプロセスを調べる
ps aux | grep postgres
## 該当のプロセスを終了する
kill <<プロセスID>> # ex) kill 12345

方法2(PostgreSQLからプロセスを終了する)

postgres上で行います。
この方法だとプロセスを終了できない場合があります。

## ロックされている処理を調べます
SELECT * FROM pg_locks;  # pidのカラムにある数字がプロセスIDです

## プロセスを終了します
SELECT pg_cancel_backend(プロセスID);

方法3(postgresqlを再起動する)

※未検証
postgresqlを再起動すればプロセスも終了されるはず。

方法4(端末を再起動する)

※未検証
方法3とほぼ同じです。端末自体を再起動すればプロセスも終了されるはずです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?