快速结论:这个报错通常出现在 AnythingLLM 批量删除 workspace 文档的同时,又有文档正在被向量化写入(embedding)时;优先排查是否发生了并发写入,以及 SQLite 数据库所在磁盘是否为本地高速盘。
适用环境:Issue 中确认的环境为 Docker(本地部署),默认使用 SQLite,Prisma clientVersion 5.3.1,Embedder 使用 AnythingLLM 自带 Embedder。操作系统、Python、CUDA、显卡型号未在 Issue 中提供。
最快修复方案:把删除操作与上传/向量化操作改为串行执行,不要并行触发;通过开发者 API 脚本操作时,对每个调用使用 await,并把批量删除合并成单次 update-embeddings 请求,而不是同时发出大量请求。
注意事项:该方案是 Issue 维护者给出的规避建议,不是代码层面的修复;Issue 最终以“环境/使用约束,而非可在代码端明确修复的问题”关闭。若 SQLite 数据库放在网络挂载(NFS/SMB)或某些 Docker Desktop bind mount 上,锁竞争会明显恶化,此时仅靠串行操作可能仍需要重启容器恢复。
问题场景
用户在 Docker 本地运行 AnythingLLM,通过手动操作或开发者 API 批量删除某个 workspace 中的文档。删除过程中或删除后,WebGUI 访问异常,出现 “get started” 引导页,而不是正常的 workspace 概览列表。有时实例会一直停留在错误状态,需要重启 Docker 容器并等待一段时间才能重新连接;有时几分钟后自行恢复。
报错原文
Error occurred during query execution:
ConnectorError(ConnectorError { user_facing_error: None, kind: ConnectionError(Timed out during query execution.), transient: false })
Bulk insert failed PrismaClientUnknownRequestError:
Invalid `prisma.document_vectors.create()` invocation:
Error occurred during query execution:
ConnectorError(ConnectorError { user_facing_error: None, kind: ConnectionError(Timed out during query execution.), transient: false })
at wn.handleRequestError (/app/server/node_modules/@prisma/client/runtime/library.js:123:6902)
at wn.handleAndLogRequestError (/app/server/node_modules/@prisma/client/runtime/library.js:123:6119)
at wn.request (/app/server/node_modules/@prisma/client/runtime/library.js:123:5839)
at async l (/app/server/node_modules/@prisma/client/runtime/library.js:128:9763) {
clientVersion: '5.3.1'
}
[backend] info: prisma:error
Invalid `prisma.system_settings.findFirst()` invocation:
Error occurred during query execution:
ConnectorError(ConnectorError { user_facing_error: None, kind: ConnectionError(Timed out during query execution.), transient: false })
[backend] error:
Invalid `prisma.system_settings.findFirst()` invocation:
Error occurred during query execution:
ConnectorError(ConnectorError { user_facing_error: None, kind: ConnectionError(Timed out during query execution.), transient: false })
[backend] info: prisma:error
Invalid `prisma.system_settings.findFirst()` invocation:
Error occurred during query execution:
ConnectorError(ConnectorError { user_facing_error: None, kind: ConnectionError(Timed out during query execution.), transient: false })
[backend] error:
Invalid `prisma.system_settings.findFirst()` invocation:
原因分析
Issue 维护者指出,问题不在文档删除逻辑本身,而在于删除与向量化写入发生了并发。日志中失败的查询是 document_vectors.create(),说明在批量删除的同一时刻,仍有文档正在被嵌入并写入向量表。
AnythingLLM 默认使用 SQLite,而 SQLite 同一时间只允许一个写入者。并发的 embed 写入与 delete 写入互相争抢写锁,导致其他查询(例如 system_settings.findFirst())在等待锁时超时。前端读不到 settings,就会退回 “get started” 页面;等写入队列排空后,前端又能正常读取,因此表现为几分钟后自行恢复。若数据库位于网络挂载或部分 Docker Desktop bind mount 上,SQLite 的锁行为会进一步恶化,这通常就是必须重启容器才能恢复的原因。
环境排查
- 确认 AnythingLLM 是否运行在 Docker(本地)环境,与 Issue 一致。
- 确认当前是否使用默认 SQLite 数据库,以及
STORAGE_DIR指向的位置。 - 检查
STORAGE_DIR是否位于本地高速磁盘;排除 NFS、SMB 等网络挂载。 - 检查是否使用了 Docker Desktop 在 Windows/macOS 上的 bind mount,这类挂载可能加重 SQLite 锁竞争。
- 确认触发问题时是否有上传/嵌入任务与删除操作同时存在。
- Issue 中记录 Prisma clientVersion 为 5.3.1,可据此核对后端日志中的版本信息。
解决步骤
- 停止并行操作:不要在批量删除文档的同时执行上传或向量化嵌入任务,改为先完成一批再执行下一批。
- 如果通过开发者 API 脚本操作,对每个 API 调用使用
await,确保前一个请求完成后再发出下一个。 - 把批量删除合并为一次
update-embeddings请求,避免连续快速发出大量独立删除请求。 - 确认
STORAGE_DIR位于快速本地磁盘,避免使用 NFS/SMB 等网络挂载。 - 如果是 Docker Desktop(Windows/macOS),尽量避开会显著加重 SQLite 锁问题的 bind mount 方式,将存储放到容器本地卷或本地高速路径。
- 若实例已经卡在错误状态,按 Issue 反馈重启 Docker 容器,并等待写入队列排空后再重新访问。
验证方法
按串行方式执行删除与嵌入操作后,观察后端日志中是否还出现 document_vectors.create() 或 system_settings.findFirst() 的 Timed out during query execution。同时访问 WebGUI,确认是否直接进入正常的 workspace 概览页,而不是 “get started” 页。若仍会在几分钟后自行恢复或需要重启容器,说明磁盘/挂载带来的锁竞争可能仍然存在,需要继续调整存储位置。
参考来源
Mintplex-Labs/anything-llm #6606
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[Bug] Client sends empty _meta:{} on every request; strict servers (Meta Ads MCP) reject with HTTP 400](https://www.chat-gpts.plus/wp-content/uploads/2026/10/3473-a9bea40e-768x403.jpg)

![[Bug]: s3_v2 async 500/503 retries are bypassed by HTTPStatusError](https://www.chat-gpts.plus/wp-content/uploads/2026/10/42868-cdeacc24-768x403.jpg)