概要
autogenerate オプションを付与すると発生するエラーになります
対策を紹介します
環境
- Ubuntu 22.04
- Python 3.10.2
- alembic 1.13.2
env.py
に metadata を追加する
DeclarativeBase or declarative_base で作成された Base クラスを import しその metadata を参照します
ポイントはちゃんとマイグレーションする際の context.configure にも metadata 情報を渡す点です
-
vim env.py
from app.models import Base
target_metadata = Base.metadata
def run_migrations_online() -> None:
"""Run migrations in 'online' mode.
In this scenario we need to create an Engine
and associate a connection with the context.
"""
configuration = config.get_section(config.config_ini_section)
if configuration is None:
raise ValueError()
connectable = engine_from_config(
configuration=configuration,
prefix="sqlalchemy.",
poolclass=pool.NullPool,
)
with connectable.connect() as connection:
context.configure(
connection=connection,
target_metadata=target_metadata, # <= ここでちゃんと設定するのが重要
)
with context.begin_transaction():
context.run_migrations()
最後に
あとは普通にマイグレーションできるか確認すれば OK です
almbic や sqlalchemy を最新にすると発生することがあるようです
0 件のコメント:
コメントを投稿