我不小心删除了我的迁移文件夹。于是我就跑了
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'
据我了解,它正在寻找我的另一个早已消失的迁移文件夹。我该如何解决这个问题?
删除数据库中 alembic_version 表中的特定记录。只有一个名为 version_num 的 varchar 列,因此该表达式应该有效:
delete from alembic_version where version_num='470572fac7a1';
删除
/migrations
目录并重命名/复制您的应用程序数据库。然后从头开始。
flask db init
flask db migrate
flask db upgrade
现在用备份中的数据重新填充新的空数据库。
您必须删除数据库中的alembic_version表。
连接到您的数据库,然后执行:
DROP TABLE alembic_version;
请检查以下答案以了解更多详细信息https://stackoverflow.com/a/32356600
前往
versions/
内的migrations/
。
如果您没有看到文件夹
versions/
或者文件夹 versions/
中没有修订版本,请键入以下命令来创建修订版本:
flask db revision
您将在
versions/
文件夹中获得修订版。打开它并将修订 ID 替换为“470572fac7a1”:
revision = "470572fac7a1"
再次输入
flask db migrate
。
应该可以。
从 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
如果您有基本版本的文件,您可以执行
alembic downgrade base
重置为初始版本。
如果您没有任何修订版文件(甚至是基本修订版),您可以使用
alembic_version
从 postgres 删除 drop table <schema>.alembic_version
表,然后运行 alembic ensure_version
重新创建版本表。