如何清除历史记录并从头开始运行所有迁移?

9

我该如何使用alembic清除历史记录?在alembic history中我找不到这个选项。我想从第一个迁移开始运行,而不是最后一个已应用的迁移。

4个回答

17
如果您想要使用全新的数据库,只需删除现有数据库,创建一个新的,然后运行迁移。例如,对于PostgreSQL:
$ dropdb my_db
$ createdb my_db
$ alembic upgrade head

现在您拥有一个空的数据库,并已应用所有迁移。


15

您可以使用:

alembic downgrade base

这个命令将撤销所有的迁移。

(来源)


8
在最新版本的alembic(0.7.6)中,你可以使用 stamp 命令来实现。
alembic stamp base

这个命令会清除迁移历史记录,但不会撤销任何已经应用的迁移。


2
-1;这根本不是问题要求的。这会让Alembic“认为”没有运行任何迁移,但实际上并不会撤销任何已经运行的迁移,很可能会导致任何后续的“升级”命令失败(因为它将尝试创建已经存在的表)。 - Mark Amery
4
问题并没有明确说明迁移必须被撤销。我认为有两种可能的解释,而且两个答案都同样有效。 - xuhcc

7
Alembic会在您的数据库中的alembic_version表中跟踪迁移记录。
简单地通过以下命令删除表以从头开始: DROP TABLE alembic_version; 然后再次尝试运行您的迁移!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接