を使用してFlask-Migrate==2.0.0
います。変更を正しく検出していません。python manage db migrate
以前のリビジョンでは正常に追加されていましたが、実行するたびにすべてのモデルのスクリプトが生成されます。テーブルに 2 つの新しい列を追加しました。移行リビジョンには、すべてのテーブルが追加される代わりに、それらの 2 つの新しい列のみが含まれているはずです。不足しているものはありますか?
編集1
これが何が起こっているかです。プロジェクトに Flask_Migrate を追加しました。
python manage db init
python manage db migrate
python manage db upgrade
モデル用のFlask-Migrate生成テーブルと、リビジョンを持つalembic_versionテーブル
985efbf37786
この後、いくつかの変更を加えました。テーブルの 1 つに 2 つの新しい列を追加し、コマンドを再度実行しました
python manage db migrate
新しいリビジョンを生成しました
934ba2ddbd44
ただし、これら 2 つの新しい列だけを追加するのではなく、リビジョンにはすべてのテーブルとこれら 2 つの新しい列のスクリプトが含まれています。たとえば、最初のリビジョンでは、次のようなものがあります
op.create_table('forex_costs',
sa.Column('code', sa.String(), nullable=False),
sa.Column('country', sa.String(), nullable=False),
sa.Column('rate', sa.Numeric(), nullable=False),
sa.PrimaryKeyConstraint('code', 'country', name='forex_costs_id'),
schema='regis'
)
2 番目のリビジョンにも、まったく同じコードが含まれています。すでに生成されている場合、その理由がわかりません。
少しグーグルで調べたところ、問題はhttps://github.com/miguelgrinberg/Flask-Migrate/issues/93とまったく同じように見えますが、Oracle DB は使用していません。Postgresql を使用しています。また、効果があるかどうかはわかりませんが、デフォルトのパブリックスキーマでテーブルを作成していません。代わりに、テーブルがたくさんあるので(約100)、2つの新しいスキーマ(schema_aとschema_b)を作成しています。だからそれらを整理するだけです。
編集2
最初の問題は、追加することで解決したようです
include_schemas=True
env.pyで。
現在、新しい移行では、既存のテーブルを再度作成しようとはしていませんが、外部キーに問題があります。新しいリビジョンを作成するたびに、既存の外部キーを削除してから追加しようとします。ログはこんな感じ
INFO [alembic.autogenerate.compare] Detected removed foreign key (post_id)(post_id) on table album_photos
INFO [alembic.autogenerate.compare] Detected removed foreign key (album_id)(album_id) on table album_photos
INFO [alembic.autogenerate.compare] Detected removed foreign key (user_id)(user_id) on table album_photos
INFO [alembic.autogenerate.compare] Detected added foreign key (album_id)(album_id) on table prodcat.album_photos
INFO [alembic.autogenerate.compare] Detected added foreign key (post_id)(post_id) on table prodcat.album_photos
INFO [alembic.autogenerate.compare] Detected added foreign key (user_id)(user_id) on table prodcat.album_photos
各外部キー制約に名前を追加しようとしましたが、効果はありません。