无法找到来源:错误 [root] 错误:找不到由“..”标识的修订版

Geo*_*oMe 3 python sqlite flask flask-migrate

我正在尝试从命令行运行迁移并不断收到错误消息: ERROR [root] Error: Can't locate revision identified by 'faf3ebfbe667'

正如其他帖子中所建议的,我删除了我的 sqlite 数据库和迁移文件夹(多次)。我也重新创建了虚拟环境。我检查了项目文件夹中的所有文件以获取对修订版的引用,但在那里找不到任何内容。错误仍然存​​在。我试图在 db 中删除 alembic_version 但这样的表不存在。

我尝试从命令行运行迁移,如下所示:

set FLASK_APP=my_app/__init__.py
flask db init
flask db migrate
flask db upgrade
Run Code Online (Sandbox Code Playgroud)

Ven*_*713 13

这是我的回答,虽然晚了,但希望对你有帮助。

您可以使用此方法来解决该问题。

$ flask db revision --rev-id faf3ebfbe667
$ flask db migrate
$ flask db upgrade
Run Code Online (Sandbox Code Playgroud)

谢谢。


Hit*_*man 8

转到您的数据库并删除下表: alembic_versions


Mig*_*uel 0

您在上面提到您的数据库 URL 是sqlite:///site.db。这是一个相对路径,该文件site.db将在当前目录中创建,无论该目录是什么。

既然您说明显引用了不存在的数据库修订版,我的猜测是您有多个数据库文件,并且您删除的文件不是从正在运行的应用程序的当前目录中获取的文件。

我建议您切换到绝对路径 URL 以避免出现问题。我不确定这是否是问题所在,但即使不是问题,您也应该使用绝对路径。请参阅下面的示例:

import os
basedir = os.path.abspath(os.path.dirname(__file__))
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'site.db')
Run Code Online (Sandbox Code Playgroud)

这将使数据库文件的绝对位置与包含此代码的脚本的位置相同。