オンライン移行を実行するために、MySQL エンジンで alembic を使用しようとしています。onupgrade() メソッドでの操作が失敗すると、データベースが一貫性のない状態でスタックし、onupgrade() での失敗の前に発生した操作を手動でクリーンアップするまで、alembic を使用できないことがわかりました。
例:
def upgrade():
op.create_table('sometable',
Column('id', INTEGER, primary_key=True),
Column('name', VARCHAR(150), nullable=False, unique=True))
op.add_column('anothertable' Column('id', INTEGER))
op.create_table('secondtable')
したがって、これを実行して op.add_column が失敗した場合、add_column 行を修正しても、「sometable」が存在するため、最初の操作は常に失敗します。アップグレードが完了していないため、alembic がバージョンを更新していないため、ダウングレード スクリプトを実行できません。
ondowngrade() を強制的に実行する方法があれば、役立つかもしれないと考えていました。エラーがいくつかあるはずなので、エラーを無視する必要があります。「secondtable」をドロップするようなものです。とにかくこれを行う方法が見つかりませんでした。
誰でもこれを処理する良い方法がありますか?