首页 > 解决方案 > 如何恢复部分执行的迁移?

问题描述

我最近执行flask db migrate并在两者之间出现异常(详细信息)。迁移只是部分完成。

我做了什么

迁移看起来像这样:

def upgrade():
    # ### commands auto generated by Alembic - please adjust! ###
    ...
    op.add_column('users', sa.Column('registered_on', sa.DateTime(), nullable=False))
    ...

“registered_on”之前的一切都完成了。下面的一切都不是。当我flask db upgrade再次执行时,它抱怨之前的列已经存在。

接下来,我尝试了flask db downgrade,然后flask db upgrade。那行得通,但是现在所有数据都丢失了(还不错,这是一个开发环境)。

在迁移仅部分运行后,我应该怎么做才能不删除数据库中的所有数据?

标签: alembicflask-migrate

解决方案


修复迁移脚本中的错误后,您可以注释掉upgrade()函数中在错误发生之前已经应用的操作。然后再次运行升级,以便执行其余操作。迁移脚本完全应用后不要忘记取消注释!


推荐阅读