如何恢复部分执行的迁移?
How can I revert a partially executed migration?
我最近执行了 flask db migrate
并在中间出现异常 (details)。迁移只完成了一部分。
我做了什么
迁移看起来像这样:
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
。那行得通,但现在所有数据都丢失了(还不错,这是一个开发环境)。
在迁移 运行 之后,我应该怎么做才能不从数据库中删除所有数据?
修复迁移脚本中的错误后,您可以注释掉upgrade()
函数中在错误发生之前已经应用的操作。然后运行再次升级,这样就可以进行剩下的操作了。不要忘记在完全应用迁移脚本后取消注释!
我最近执行了 flask db migrate
并在中间出现异常 (details)。迁移只完成了一部分。
我做了什么
迁移看起来像这样:
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
。那行得通,但现在所有数据都丢失了(还不错,这是一个开发环境)。
在迁移 运行 之后,我应该怎么做才能不从数据库中删除所有数据?
修复迁移脚本中的错误后,您可以注释掉upgrade()
函数中在错误发生之前已经应用的操作。然后运行再次升级,这样就可以进行剩下的操作了。不要忘记在完全应用迁移脚本后取消注释!