快速结论:该报错通常发生在 Open WebUI 通过 Git Clone 方式全新安装或升级时,Alembic 迁移因循环导入而静默失败,导致数据库表结构不完整。优先排查是否因新版本新增的 import 链引发了 config.py 的循环导入,并尝试手动执行数据库迁移。
适用环境:Open WebUI v0.11.1,操作系统 Ubuntu 26.04,Python 3.12(示例路径显示 python3.12/site-packages),通过 Git Clone 安装,使用 SQLite 数据库。Issue 中未确认 CUDA、显卡或 Ollama 版本。
最快修复方案:暂无确认的一步修复方案。Issue 讨论中提出的手动迁移方案(官方文档)在部分案例下不可行,因为迁移脚本本身也触发了相同的循环导入。可优先尝试手动迁移,但需知悉其可能在导入 Calendar 模型时再次失败。
注意事项:手动迁移方案在全新安装(无 webui.db)场景下可能无法执行;官方修复已提交,但当前版本(如 0.11.1)中问题仍存在。若手动迁移失败,建议等待官方发布修复版本或从 dev 分支构建。
问题场景
用户在 Ubuntu 26.04 上通过 Git Clone 方式安装 Open WebUI v0.11.1,执行 ./start.sh 启动脚本时,Alembic 迁移在后台静默失败。迁移失败被记录到日志,但应用仍尝试启动,导致全新安装时因缺少 config 表、或从 0.11.0 升级时因缺少 chat.timer_at 列而功能异常。
报错原文
ERROR:open_webui.env:Error running migrations: cannot import name 'ENABLE_LOCAL_WEB_FETCH' from partially initialized module 'open_webui.config' (most likely due to a circular import) (/home/ricardo/IAI/owui/open-webui/backend/open_webui/config.py)
Traceback (most recent call last):
File "/home/ricardo/IAI/owui/open-webui/backend/open_webui/config.py", line 74, in run_migrations
command.upgrade(alembic_cfg, 'head')
File "/home/ricardo/.local/lib/python3.12/site-packages/alembic/command.py", line 487, in upgrade
script.run_env()
原因分析
可能原因:迁移在导入 config.py 模块的过程中被触发(作为导入副作用),而该模块尚未完全加载。Alembic 的 env.py 会导入日历(Calendar)模型,该模型新增的 import 链会经过 utils.automations、events、retrieval.web.utils,最终反向导入 config 中定义在文件后部的设置项(如 ENABLE_LOCAL_WEB_FETCH),造成循环导入,抛出 ImportError。迁移运行器捕获该错误后仅记录日志,未停止应用,导致数据库保持旧结构。
环境排查
- 确认 Open WebUI 版本是否为 v0.11.1(或更早版本升级而来)。
- 确认 Python 版本(3.12 或 3.11 均可能触发)。
- 确认数据库类型(SQLite 或 PostgreSQL)及是否已存在 webui.db 文件。
- 检查
DATABASE_URL环境变量是否设置正确。
解决步骤
- 首先尝试官方提供的手动迁移方案,参考 Open WebUI 手动数据库迁移文档,设置
DATABASE_URL后运行alembic upgrade head。 - 若手动迁移触发
cannot import name 'Calendar',说明循环导入仍存在,可尝试在运行迁移前移除或注释config.py中触发迁移的代码块(if ENABLE_DB_MIGRATIONS: run_migrations()),将其移至main.py中执行(Issue 中评论者验证有效)。 - 检查当前分支是否为最新 dev 分支,或等待官方发布包含修复的版本(0.11.2 或更高)。
- 若使用 Docker,可尝试重建镜像或等待官方镜像更新。
验证方法
确认迁移成功执行:启动后日志不再显示 ERROR:open_webui.env:Error running migrations,且数据库中已存在 config 表(全新安装)或 chat.timer_at 列(从 0.11.0 升级)。可通过 sqlite3 webui.db '.tables' 或 PRAGMA table_info(chat); 验证表结构。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[bug]: InvokeAI v6.14.0-RC1 Crashed while generating Krea-2 Image](https://www.chat-gpts.plus/wp-content/uploads/2026/09/9444-d6bdc60c-768x403.jpg)
![[Question]: Shared embedded chat URL fails to access documents after logout or when accessed by other users](https://www.chat-gpts.plus/wp-content/uploads/2026/09/15895-cf3f7033-768x403.jpg)
