撤消上次Alembic迁移

Mar*_*ery 25 python sqlalchemy alembic

我创建了一个迁移alembic revision --autogenerate,将它应用到我的开发数据库中alembic upgrade head,然后意识到它不是我想要的.

如何恢复迁移,以便我可以调整它并再试一次?

Mar*_*ery 43

假设你只是想回去一个版本,使用alembic downgrade了相对迁移标识 -1:

alembic downgrade -1
Run Code Online (Sandbox Code Playgroud)

这将运行downgrade()最新修订版的方法并更新修订表以指示您现在所处的修订版.

如果您需要返回多个迁移,请运行

alembic history
Run Code Online (Sandbox Code Playgroud)

要查看项目中所有迁移的列表(从最新到最旧),然后复制并粘贴要返回的迁移的标识符:

alembic downgrade 8ac14e223d1e
Run Code Online (Sandbox Code Playgroud)

目前没有命令可以从您的版本目录中删除迁移,因此如果您要完全删除所有错误迁移的痕迹,则需要4c009570237e_add_widget_table.py手动删除版本文件(如).


fud*_*udu 7

请注意 Mark Amery 的答案:

如果您想运行某个版本的 downgrade(),则需要运行alembic downgrade the-version-before-it,这意味着它将恢复到您要降级的版本之后的版本。

例如,您运行alembic history并获取以下列表:

在此输入图像描述

假设您想恢复到cdd99ec41968,那么您将必须运行命令:

alembic downgrade 15972effcbd3

这是我们要恢复的版本之前的版本。

希望它足够清楚。


Adá*_*bar 6

使用蒸馏器时要小心

考虑下一次修订:

aaa <-- head
bbb
ccc
ddd <-- base
Run Code Online (Sandbox Code Playgroud)

如果你执行alembic upgrade head你就会aaa修改。

如果你执行alembic downgrade base你就会ddd修改。

如果你最终执行了几次,alembic downgrade -1你就可以从aaa修订开始ddd。同上alembic upgrade +1

如果您只想在修订之间进行迭代,aaa我bbb建议使用:

升级:

 alembic upgrade head
Run Code Online (Sandbox Code Playgroud)

降级

 alembic downgrade head-1
Run Code Online (Sandbox Code Playgroud)