Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 找不到源:错误[root]错误:Can';t查找由';标识的修订';_Python_Sqlite_Flask_Flask Migrate - Fatal编程技术网

Python 找不到源:错误[root]错误:Can';t查找由';标识的修订';

Python 找不到源:错误[root]错误:Can';t查找由';标识的修订';,python,sqlite,flask,flask-migrate,Python,Sqlite,Flask,Flask Migrate,我正在尝试从命令行运行迁移,但不断出现错误: ERROR[root]错误:找不到由“faf3ebfbe667”标识的修订版 正如在其他帖子中建议的那样,我删除了我的sqlite db和迁移文件夹(多次)。我还重新创建了虚拟环境。我检查了我的项目文件夹中的所有文件,以查找对修订版的引用,但在那里找不到任何内容。错误仍然存在。 我试图在db中删除alembic_版本,但这样的表不存在 我尝试从comand line运行迁移,如下所示: set FLASK_APP=my_app/__init__.py

我正在尝试从命令行运行迁移,但不断出现错误:
ERROR[root]错误:找不到由“faf3ebfbe667”标识的修订版

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

我尝试从comand line运行迁移,如下所示:

set FLASK_APP=my_app/__init__.py
flask db init
flask db migrate
flask db upgrade

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

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

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

导入操作系统
basedir=os.path.abspath(os.path.dirname(_文件__))
SQLALCHEMY_DATABASE_URI='sqlite://'+os.path.join(basedir,'site.db')

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

转到数据库并删除下表:
alembic\u版本

在数据库中删除该表

alembic_版本

然后使用

$ python run.py db stamp heads

我的案例是docker、Python3.8和Ubuntu20.04 lts。错误消息是:

错误[root]错误:找不到由“3d42f5f6cf4b”标识的修订


因为我在migration/versions中没有这样的版本文件,所以我只是销毁了所有容器和映像,然后再次运行
sudo docker compose build
,现在它可以工作了。

转到migrations(例如:migrations)中的文件夹versions

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

    • 烧瓶数据库修订
  • 如果文件夹中已存在修订 打开它并将修订id替换为“faf3ebfbe667”,如下所示

    • revision=“faf3ebfbe667”
  • 再次键入命令
    flask db migrate


  • 它对我很有用。

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

  • 转到
    migrations/versions
    ,找到了最近创建的迁移文件
  • 获取该迁移的修订标识符(应位于导入下,位于注释下,该注释为
    #修订标识符,由Alembic使用)
  • alembic_version
    表中,我使用步骤2中的修订标识符更新了
    version_num

  • 您的
    SQLALCHEMY\u数据库\u URI
    配置变量的值是多少?它是:'sqlite:///site.db'在
    alembic/versions
    :(1)删除pycache文件夹中的所有文件(2)grep表示“faf3ebfbe667”:如果文件中出现该文件,则需要更正任何引用,如果该文件不是alembic历史记录的一部分,则删除该文件。执行此操作之前,最好先备份
    alembic/versions
    。(或者你可以用你的发现更新问题)。