![[Model provier] Duplicate entries are created when adding a model authentication provider.](https://www.chat-gpts.plus/wp-content/uploads/2026/07/38381-1eed626b.jpg)
[Model provier] Duplicate entries are created when adding a model authentication provider.
快速结论:这个报错通常出现在 Dify 自托管环境的模型管理页面,当用户添加或删除自定义模型认证提供商时,数据库中的凭据记录(ProviderModelCredential)未被同步清理,导致模型提供者列表中出现重复条目。优先排查模型凭据记录是否残留。
问题场景
用户在使用 Dify 1.15.0(main 分支,2026 年 7 月 3 日)的自托管源码版本时,在 Settings > Model Providers 页面中添加 / 删除自定义模型认证提供商(如 OpenAI / Azure 等),操作后模型提供者列表出现重复条目,或执行删除操作后模型再次出现。
报错原文
[Model provier] Duplicate entries are created when adding a model authentication provider.
原因分析
Issue 评论指出存在两个独立根因:
- 原因一:删除自定义模型时,当前代码仅删除了
ProviderModel记录,但相关的ProviderModelCredential记录可能残留。由于模型列表仍可从残留的凭据 / 配置重建,导致删除操作成功后模型再次出现。 - 原因二:保存配置时,后端
/models端点要求所选凭据必须与当前model和model_type匹配。如果当前模型处于不一致的凭据删除状态,选择可用凭据可能仍然失败,因为凭据查找无法从存储的凭据上下文中解析。
环境排查
- Dify 版本:1.15.0(main 分支 2026.7.3)
- 部署方式:Self Hosted (Source) – 源码自托管
- 数据库:确认 PostgreSQL / MySQL 版本
- 模型类型:检查是否存在自定义模型(custom model)与系统预置模型混用
解决步骤
- 确认当前数据库中的
provider_model_credentials表是否有残留记录:
在数据库管理工具中执行类似查询:SELECT * FROM provider_model_credentials WHERE provider = 'your_provider' AND model = 'your_model';,检查是否存在多行重复凭据。 - 如果发现重复凭据记录,可优先尝试清理残留的
ProviderModelCredential记录。注意:这是一个可能的解决方案,Issue 中未提供具体的 SQL 删除语句,建议在操作前备份数据库。 - 根据 Issue 中的修复计划,等待合并以下 PR 后的版本更新:
- PR #36704
- PR #36520
这两个 PR 修复了模型凭据的创建 / 编辑 / 删除负载上下文以及删除回退逻辑。
- 如果急需修复,可考虑暂时避免同时操作多个模型认证提供商,或每次添加 / 删除后手动检查数据库模型凭据表的一致性。
验证方法
进入 Settings > Model Providers,尝试添加一个自定义模型认证提供商,再将其删除,然后刷新页面。确认模型提供者列表不出现重复条目,且删除后的模型不会重新出现。也可以检查数据库 provider_model_credentials 表中删除操作后是否还有对应本应删除的记录。



