我正在尝试使用带有 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”一样。我无论如何都找不到这样做。
任何人有一个很好的方法来处理这个?