我不小心删除了我的迁移文件夹。于是我运行了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'
据我了解,它正在寻找其他早已消失的迁移文件夹。我该怎么解决?
答案 0 :(得分:2)
删除数据库中表alembic_version中的特定记录。仅有一个varchar列,称为version_num,因此此表达式应该起作用:
delete from alembic_version where version_num='470572fac7a1';
答案 1 :(得分:0)
删除/migrations
目录并重命名/复制您的应用程序数据库。然后从头开始。
flask db init
flask db migrate
flask db upgrade
现在,使用备份中的数据重新填充新的空数据库。
答案 2 :(得分:0)
您可以使用以下命令还原到数据库的早期版本:
flask db revision --rev-id 470572fac7a1
答案 3 :(得分:0)
转到versions/
内的migrations/
。
如果您没有看到文件夹 versions/
或文件夹 versions/
中没有修订,请键入以下命令以创建修订:
flask db revision
您将在 versions/
文件夹中获得一个修订版本。打开它并将修订版 ID 替换为“470572fac7a1”:
revision = "470572fac7a1"
再次输入 flask db migrate
。
应该可以。