我正在尝试从命令行运行迁移并不断出现错误:
ERROR [root] Error: Can't locate revision identified by 'faf3ebfbe667'
根据其他帖子的建议,我删除了sqlite数据库和迁移文件夹(几次)。我也重新创建了虚拟环境。我检查了项目文件夹中的所有文件,以获取对修订的引用,但在那里找不到任何内容。错误仍然存在。 我试图在数据库中删除alembic_version,但是这样的表不存在。
我尝试从comand行运行迁移,如下所示:
set FLASK_APP=my_app/__init__.py
flask db init
flask db migrate
flask db upgrade
答案 0 :(得分:7)
转到您的数据库并删除下表:
alembic_versions
答案 1 :(得分:2)
在数据库中删除表
alembic_version
并使用
再次创建$ python run.py db stamp heads
答案 2 :(得分: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')
这将使数据库文件的绝对位置与包含此代码的脚本的位置相同。
答案 3 :(得分:0)
我的案例是 docker , python 3.8 和 ubuntu 20.04 lts 。错误消息是:
错误[root]错误:找不到由'3d42f5f6cf4b'标识的修订版本
由于我在迁移/版本中没有这样的版本文件,所以我只破坏了所有容器和图像并再次运行sudo docker-compose build
,现在它可以工作了。
答案 4 :(得分:0)
转到迁移内部的文件夹版本(例如:迁移)
如果看不到文件夹版本或文件夹版本中没有修订,请输入以下命令以创建修订
如果文件夹中已经存在修订版 打开它,并按如下所示用“ faf3ebfbe667”替换修订版ID
revision = "faf3ebfbe667"
再次键入命令flask db migrate
。
对我有用。
答案 5 :(得分:0)
如果这对其他人有帮助,我执行了以下操作来解决错误:
migrations/versions
并找到最近创建的迁移文件。# revision identifiers, used by Alembic
注释下)。alembic_version
表中,我使用第二步中的修订标识符更新了 version_num
列。