删除迁移文件夹后重置 Alembic

问题描述 投票:0回答:6

我不小心删除了我的迁移文件夹。于是我就跑了

flask db init
,一切都很顺利。但是当我运行
flask db migrate
时,它给了我这个错误:

INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
ERROR [root] Error: Can't locate revision identified by '470572fac7a1'

据我了解,它正在寻找我的另一个早已消失的迁移文件夹。我该如何解决这个问题?

python flask alembic
6个回答
14
投票

删除数据库中 alembic_version 表中的特定记录。只有一个名为 version_num 的 varchar 列,因此该表达式应该有效:

delete from alembic_version where version_num='470572fac7a1';


9
投票

删除

/migrations
目录并重命名/复制您的应用程序数据库。然后从头开始。

flask db init
flask db migrate
flask db upgrade

现在用备份中的数据重新填充新的空数据库。


7
投票

您必须删除数据库中的alembic_version表。

连接到您的数据库,然后执行:

DROP TABLE alembic_version;

请检查以下答案以了解更多详细信息https://stackoverflow.com/a/32356600


2
投票

前往

versions/
内的
migrations/

如果您没有看到文件夹

versions/
或者文件夹
versions/
中没有修订版本,请键入以下命令来创建修订版本:

flask db revision

您将在

versions/
文件夹中获得修订版。打开它并将修订 ID 替换为“470572fac7a1”:

revision = "470572fac7a1"

再次输入

flask db migrate

应该可以。


0
投票

从 github 拉取最新版本。 然后备份您的产品数据库。然后恢复本地数据库。 删除您的蒸馏器表(带级联)。

打开你的终端(使用 venv) 写下代码:

rm - rf migrations
python manage.py db init

并打开迁移文件夹。右键单击 alembic.ini 并选择 git>rollback>ok。

python manage.py db migrate
python manage.py db upgrade

python manage.py db stamp head
python manage.py db migrate
python manage.py db upgrade

0
投票

如果您有基本版本的文件,您可以执行

alembic downgrade base
重置为初始版本。

如果您没有任何修订版文件(甚至是基本修订版),您可以使用

alembic_version
从 postgres 删除
drop table <schema>.alembic_version
表,然后运行
alembic ensure_version
重新创建版本表。

© www.soinside.com 2019 - 2024. All rights reserved.