快速结论:这个报错通常不是 Open WebUI 本身的问题,而是 PostgreSQL 中 config 表的主键索引与表内容不同步所致。优先排查该表是否存在重复记录,并对数据库执行 REINDEX 操作。
适用环境:Docker 安装的 Open WebUI v0.11.3,后端使用 PostgreSQL(该案例中为 ramsrib/pgvector:17 镜像),操作系统 Debian 13,Ollama v0.33.3。
最快修复方案:在 PostgreSQL 中先清理重复记录,再重建索引。具体 SQL 见下方解决步骤。Issue 作者反馈按该方案操作后问题完美解决。
注意事项:此方案会删除重复配置记录中较旧的行;执行前建议备份数据库。Issue 中确认本轮未涉及 collation 版本变更,但查询该信息仍属必要排查项。
问题场景
用户在 Open WebUI v0.11.3(Docker 部署)的管理后台“设置 > 文档”中尝试修改 CHUNK_SIZE 等 RAG 参数。点击保存后界面提示“设置已保存”,但实际设置未生效;Docker 日志中持续输出数据库唯一约束冲突错误。用户同时也确认通过 Docker 环境变量方式写入配置同样失败。
报错原文
issue: duplicate key value violates unique constraint "config_pkey1"
DETAIL: Key (key)=(web.search.yandex_web_search_url) already exists.
[SQL: UPDATE config SET updated_at=%(updated_at)s::BIGINT WHERE config.key = %(config_key)s::VARCHAR]
[parameters: [{'updated_at': 1788973486, 'config_key': 'rag.tika_server_url'}, {'updated_at': 1788973486, 'config_key': 'rag.tika_server_version'}, ... displaying 10 of 78 total bound parameter sets ...]]
原因分析
维护者确认这并非 Open WebUI 的 bug,而是 PostgreSQL config 表的主键索引与表内容不同步。本质上,该 UPDATE 语句只会修改 updated_at 字段,key 值不变。PostgreSQL 在这种纯更新操作中抛出唯一约束冲突,只可能说明表中已存在两条拥有相同 key 的活跃行。健康的唯一索引不应允许这种情况发生,因此可以判定索引本身已损坏。
索引损坏通常在 PostgreSQL 端发生 collation 变更后出现(例如更换镜像、基础操作系统或大版本升级时未执行 REINDEX)。Issue 中 config_pkey1 是 0.11 配置迁移后的正常约束名,并非异常线索。该案例中 collation 版本排查后未发现需变更的情况。
环境排查
- 确认 PostgreSQL 后端版本、镜像来源以及是否更换过基础操作系统或大版本。
- 检查 PostgreSQL 日志中是否存在 “collation version mismatch” 警告。
- 确认
config表中是否存在重复key(需要关闭索引扫描后查询)。 - 排除其他类似症状但不同根因的已知问题(如 #18942、#19668、#23995 等均属设置未持久化,但与本次数据库索引损坏无直接关联)。
解决步骤
- 备份当前数据库(防止清理误删数据)。
- 连接至 Open WebUI 所使用的 PostgreSQL 数据库,执行以下 SQL,在禁用索引扫描的前提下查找重复键值记录:
SET enable_indexscan = off; SET enable_indexonlyscan = off; SET enable_bitmapscan = off; SELECT ctid, key, updated_at FROM config WHERE key IN (SELECT key FROM config GROUP BY key HAVING count(*) > 1) ORDER BY key, updated_at; - 若查询返回结果,在同一会话中保留每组重复 key 中最新一条(ctid 较大),删除其余旧行,随后重建表索引并检查其他受影响表:
DELETE FROM config a USING config b WHERE a.key = b.key AND a.ctid < b.ctid; REINDEX TABLE config; REINDEX DATABASE <your_db>; - 查看 PostgreSQL 日志确认是否存在 “collation version mismatch”。如果存在,在数据库重建索引后执行:
ALTER DATABASE <your_db> REFRESH COLLATION VERSION; - 重新在 Open WebUI 管理后台尝试修改 CHUNK_SIZE 等参数并保存。
验证方法
保存设置后查看 Docker 日志确认不再出现 duplicate key value violates unique constraint "config_pkey1" 错误;刷新页面确认 CHUNK_SIZE 等配置内容已实际更新且重启后仍然保留。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


