找不到源:错误[根]错误:找不到由“ ..”标识的修订

时间:2019-09-02 13:56:45

标签: python sqlite flask flask-migrate

我正在尝试从命令行运行迁移并不断出现错误: 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

6 个答案:

答案 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)

转到迁移内部的文件夹版本(例如:迁移)

  1. 如果看不到文件夹版本或文件夹版本中没有修订,请输入以下命令以创建修订

    • 烧瓶数据库版本
  2. 如果文件夹中已经存在修订版 打开它,并按如下所示用“ faf3ebfbe667”替换修订版ID

    • revision = "faf3ebfbe667"
  3. 再次键入命令flask db migrate

对我有用。

答案 5 :(得分:0)

如果这对其他人有帮助,我执行了以下操作来解决错误:

  1. 前往 migrations/versions 并找到最近创建的迁移文件。
  2. 获取该迁移的修订标识符(应该在导入下,在 # revision identifiers, used by Alembic 注释下)。
  3. alembic_version 表中,我使用第二步中的修订标识符更新了 version_num 列。