[bug]: Can not revert back to 6.14.2 once upgraded to v7

该报错通常发生在把 InvokeAI 从 v6 升级到 v7(如 7.0.0-alpha3)后又想回退到 6.14.2 的场景。v7 启动时会单向升级原有数据库,而 v6 无法识别新版迁移记录,因此回退后启动即报错;优先排查是数据库已被迁移,以及是否有迁移前备份。

快速结论:该报错通常发生在把 InvokeAI 从 v6 升级到 v7(如 7.0.0-alpha3)后又想回退到 6.14.2 的场景。v7 启动时会单向升级原有数据库,而 v6 无法识别新版迁移记录,因此回退后启动即报错;优先排查是数据库已被迁移,以及是否有迁移前备份。

适用环境:InvokeAI 7.0.0-alpha3(回退目标 6.14.2);Windows;Invoke 启动器安装;NVIDIA(CUDA)显卡(RTX 5070Ti / RTX2060);运行环境为 uv 管理的 CPython 3.12(见报错路径)。

最快修复方案:暂无确认的一步修复方案。Issue 讨论明确指出迁移前会保留备份文件,可优先尝试用迁移前的数据库备份恢复 v6 的数据库。

注意事项:v7 对数据库的迁移是单向的,指向同一 InvokeAI 根目录后旧库不能再被 v6 使用;恢复备份只回退数据库数据,不会自动还原版本或配置,具体备份文件名与位置 Issue 中未给出,需自行在本地查找。

问题场景

用户在 Windows 上通过 Invoke 启动器安装,先升级到 InvokeAI 7.0.0-alpha3,之后尝试回退到 6.14.2。回退版本启动时初始化 C:\Invoke\databases\invokeai.db 失败,应用无法拉起。

报错原文

[InvokeAI]::INFO --> Initializing database at C:\Invoke\databases\invokeai.db
[uvicorn.error]::ERROR --> Traceback (most recent call last):
  File "C:\Invoke\.venv\Lib\site-packages\starlette\routing.py", line 694, in lifespan
    async with self.lifespan_context(app) as maybe_state:
  File "...\contextlib.py", line 210, in __aenter__
    return await anext(self.gen)
  File "C:\Invoke\.venv\Lib\site-packages\fastapi\routing.py", line 240, in merged_lifespan
    async with original_context(app) as maybe_original_state:
...
[bug]: Can not revert back to 6.14.2 once upgraded to v7

原因分析

根据 Issue 讨论,v7 指向已有 InvokeAI 根目录启动时会升级数据库,且迁移只能单向进行;v6 会拒绝打开包含其不识别迁移记录的数据库。因此回退后 v6 读取到已被 v7 迁移过的 invokeai.db,初始化失败并抛出上述 traceback。数据库版本与 v6 不兼容是最可能的原因;具体是哪个迁移步骤导致不兼容,Issue 中未展开。

环境排查

  • 确认当前运行的 InvokeAI 版本是否为 6.14.2,以及此前是否用同一根目录启动过 v7(如 7.0.0-alpha3)。
  • 确认 C:\Invoke\databases\invokeai.db 是否是 v7 升级后的数据库,而非迁移前的旧库。
  • 检查 InvokeAI 根目录或数据库目录下是否存在迁移前生成的备份文件(Issue 仅说明迁移时会保留备份,未给出具体命名)。
  • 确认启动器指向的根目录与数据库路径一致,避免误用另一份数据库。

解决步骤

  1. 停止 InvokeAI,避免运行中的进程继续占用或改写数据库。
  2. 在 InvokeAI 根目录及数据库所在目录中查找迁移前生成的数据库备份文件;Issue 讨论提到迁移发生时会保留备份文件。
  3. 将当前已被 v7 迁移的 invokeai.db 改名或移出原路径,作为保留备份,不要直接删除。
  4. 用找到的迁移前备份文件替换为 v6 期望的数据库文件(文件名需与 v6 读取的数据库一致,Issue 中未明确说明,可优先尝试按原文件名恢复)。
  5. 启动 6.14.2,确认数据库初始化是否通过。

验证方法

回退到 6.14.2 后再次启动,日志中不再出现数据库初始化阶段的 Traceback (most recent call last) 和 uvicorn 生命周期报错,应用界面能正常打开并读取原有数据,即可认为问题已解决。若仍报同类错误,说明恢复的数据库仍含 v6 不识别的迁移记录,需确认备份是否为迁移前版本。

参考来源

invoke-ai/InvokeAI #10000

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 29763

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注