快速结论:Dify 1.16 在使用 workflow 的 document‑extractor 节点处理超大文本(超过 100,000 字符)时,变量卸载(variable offloading)机制会将 tenant_id 赋为空字符串 "",导致 PostgreSQL 无法将空值转换为 UUID,报错 Workflow variable offloading creates upload_files with empty tenant_id causing UUID cast error。优先排查 Dify 版本是否为 1.16,并升级到包含修复的版本。
适用环境:Dify 1.16,Self‑Hosted (Docker) 部署。
最快修复方案:升级 Dify 到包含 PR #39364 和 #39307 的版本(如 1.16.1 或更高)。
注意事项:升级前请备份数据库及配置文件;若无法立即升级,可等待官方发布包含此修复的稳定版本。
问题场景
用户在使用 Dify 1.16(Self‑Hosted Docker)创建 workflow 时,添加了 document‑extractor 节点。上传一个 PDF 文件,且该文件提取后的文本长度超过 100,000 字符。运行该 workflow 后,在运行结果或服务器日志中看到 UUID cast 错误。
报错原文
Workflow variable offloading creates upload_files with empty tenant_id causing UUID cast error
原因分析
在 workflow 草稿/调试运行过程中,变量卸载机制(variable offloading)从当前可变的用户/租户状态派生 tenant_id,而非从 app 模型本身获取。当 document‑extractor 输出大文本(超过 100k 字符)时,需要卸载到 upload_files 表,但此时 tenant_id 被置为空字符串 ""。PostgreSQL 的 UUID 字段无法接受空字符串,导致 INSERT 失败。
环境排查
- Dify 版本:请确认是否为 1.16(下方 “设置 → 关于” 可查看)。
- 部署方式:Self‑Hosted (Docker)。
- 数据库:PostgreSQL(任何支持 UUID 的版本)。
解决步骤
- 确认当前 Dify 版本是否为 1.16。
- 升级 Dify 到包含 PR #39364 和 #39307 的版本(例如 1.16.1 或后续新版)。升级方式参考官方文档中的 Docker 升级步骤。
- 升级后重启所有容器,确保新代码生效。
验证方法
重新创建包含 document‑extractor 节点的 workflow,上传一个提取文本超过 10 万字符的 PDF 文件,运行后检查 workflow 执行结果是否正常,服务器日志中不再出现 UUID cast 相关错误。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


