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
- 烧瓶数据库修订
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
。(或者你可以用你的发现更新问题)。