Open1

FastAPI + alenbicでテーブルモデルを変えたい

RYORYO

テーブル定義を変えたいとき、alembicを使用している場合は、models.pyを書き換え、下記で行う。

alembic revision --autogenerate -m "<コメント>"
alembic upgrade head

しかし、テーブル制約に引っかかるような変更の場合、失敗する。(既にデータが入っているテーブルに対してNOT NULL制約のついたカラムを追加するなど)

そのような場合はテーブルデータを削除してから上記コードを行う必要がある。

やり直そうとしたらエラーになる

間違った状態で上記コードを実行してエラーになった際、やり直そうと思ってmodels.pyを再度書き換え、revisionすると、下記のエラーが出ることがある。

ERROR [alembic.util.messaging] Target database is not up to date.
  FAILED: Target database is not up to date.

このようになった際には、一度downgrade してからupgrade するとうまくいくかもしれません。

alembic downgrade -1
alembic revision --autogenerate -m "<コメント>"
alembic upgrade head