无法通过修订 ID 回滚特定的 Alembic 迁移

问题描述

我正在尝试通过 Alembic 在 Postgresql 中进行架构迁移。

我有 2 次迁移,revision = '0eb4bd9decb0'down_revision = Nonerevision = 'bf34bf428845',down_revision = '0eb4bd9decb0'

所以我通过以下方式成功地从两个迁移文件运行迁移:-

alembic upgrade 0eb4bd9decb0

alembic upgrade bf34bf428845

现在我在降级这些迁移时遇到问题,即我想使用 revision= 'bf34bf428845'

降级迁移

所以我写

alembic downgrade bf34bf428845

但它不起作用并且没有显示任何错误

以上代码输出:-

(migration) C:\xampp\htdocs\dbmigration python\migration\db>alembic downgrade bf34bf428845
INFO  [alembic.runtime.migration] Context impl PostgresqlImpl.
INFO  [alembic.runtime.migration] Will assume transactional DDL.

但是如果我运行此代码:-

alembic downgrade -1

它按 Undo last Alembic migration

的预期工作

那么如何通过修订 ID 降级 Alembic 迁移?

解决方法

跑步时

alembic upgrade 0eb4bd9decb0
alembic upgrade bf34bf428845

顺便说一下,这和刚才一样

alembic upgrade bf34bf428845

您的数据库将处于修订版 bf34bf428845。那么如果你运行

alembic downgrade bf34bf428845

它不会有任何影响,因为数据库的版本已经是 bf34bf428845。

如果您想撤消使您进入修订版 bf34bf428845 的更改,您需要降级到 之前 bf34bf428845 的修订版,即,

alembic downgrade bf34bf428845-1

alembic downgrade 0eb4bd9decb0