Open1
FastAPI + alenbicでテーブルモデルを変えたい
テーブル定義を変えたいとき、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