news 2026/6/28 16:09:37

Dify db_query 插件连接本地 MySQL 故障排查

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Dify db_query 插件连接本地 MySQL 故障排查

问题现象

Dify 使用junjiem/db_query插件执行 SQL 查询时,报错:

RuntimeError: Error executing SQL: (pymysql.err.OperationalError) (2003, "Can't connect to MySQL server on 'host.docker.internal' ([Errno -2] Name or service not known)")

根本原因:plugin_daemon容器内部无法解析host.docker.internal,导致无法连接到宿主机上的 MySQL。


解决方案

步骤 1:修改 docker-compose.yaml

找到 Dify 项目下的docker-compose.yaml(通常位于 Dify 项目根目录的docker/文件夹内)。

找到plugin_daemon服务配置,在restart: always下方添加extra_hosts

plugin_daemon: image: langgenius/dify-plugin-daemon:0.6.3-local restart: always extra_hosts: # ← 添加此行 - "host.docker.internal:host-gateway" # ← 添加此行 env_file: - path: ./envs/core-services/shared.env required: false # ... 以下保持不变

步骤 2:重启 plugin_daemon 容器

cd Dify项目目录/docker docker-compose up -d plugin_daemon

步骤 3:验证修复

确认容器内可解析host.docker.internal

docker exec docker-plugin_daemon-1 sh -c "getent ahosts host.docker.internal"

正常应返回192.168.65.254(IPv4)地址。


Dify App 中 db_query 插件配置参数

参数说明示例值
db_type数据库类型mysql
db_host数据库地址host.docker.internal
db_port端口3306
db_username用户名root
db_password密码你的密码
db_name数据库名要查询的库名
db_properties额外属性(可选)留空
query_sqlSQL 查询语句SELECT * FROM table_name
output_format输出格式markdownjson

备选方案(如果extra_hosts不生效)

方案 A:使用宿主机真实 IP

  1. 在宿主机运行ipconfig获取本机局域网 IP(如192.168.x.x

  2. 在 db_query 插件参数中将db_host设为该 IP 地址

方案 B:检查 MySQL 配置

确保宿主机 MySQL 允许远程连接:

-- 允许 root 从任意主机连接 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '密码'; FLUSH PRIVILEGES;

同时检查:

  • MySQL 监听0.0.0.0:3306(不是127.0.0.1

  • Windows 防火墙允许 3306 端口入站


排查命令速查

# 查看容器日志 docker logs docker-plugin_daemon-1 ​ # 测试容器内 DNS 解析 docker exec docker-plugin_daemon-1 sh -c "getent hosts host.docker.internal" ​ # 查看容器网络 docker inspect docker-plugin_daemon-1 --format '{{range $net, $v := .NetworkSettings.Networks}}{{$net}}: {{$v.IPAddress}}{{"\n"}}{{end}}' ​ # 进入容器内部 docker exec -it docker-plugin_daemon-1 sh ​ # 查看容器环境变量 docker inspect docker-plugin_daemon-1 --format '{{json .Config.Env}}' | ConvertFrom-Json ​ # 查看 db_query 插件代码 docker exec docker-plugin_daemon-1 cat "/app/storage/cwd/junjiem/db_query-*/tools/sql_query.py" ​ # 查看 db_util 工具类(SQLAlchemy 连接逻辑) docker exec docker-plugin_daemon-1 cat "/app/storage/cwd/junjiem/db_query-*/tools/db_util.py"

原理说明

  • host.docker.internal是 Docker Desktop 提供的特殊 DNS 名称,用于从容器访问宿主机服务

  • Docker Desktop for Windows 通过host-gateway自动解析为网关 IP(192.168.65.254fdc4:f303:9324::254

  • 早于 18.03 的 Docker Desktop 版本或特定网络配置下可能不支持,需通过extra_hosts手动注入

  • db_query插件是 Dify 插件市场中的社区插件,运行在plugin_daemon容器内,该容器默认不带host.docker.internal解析

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/28 16:08:55

深入解析I3C总线错误处理机制:从原理到RA8T2工程实践

1. 项目概述:为什么I3C的错误处理如此重要? 在嵌入式系统开发中,尤其是在传感器网络、移动设备或汽车电子领域,主控制器与多个外设之间的通信可靠性是系统稳定的基石。我们过去常依赖I2C总线,它简单、成熟,…

作者头像 李华
网站建设 2026/6/28 16:03:48

RA8T2 MRAM安全与错误处理寄存器详解与实战

1. 项目概述与核心价值 在嵌入式系统开发,尤其是汽车电子和工业控制这类对可靠性要求极高的领域,内存的稳定性和安全性从来都不是一个可以讨价还价的选项。一次偶发的内存位翻转,轻则导致传感器数据异常,重则可能引发系统功能失效…

作者头像 李华
网站建设 2026/6/28 15:53:03

RA8P1独立看门狗(IWDT)配置全解析:窗口机制、状态诊断与实战技巧

1. 独立看门狗定时器(IWDT)的核心价值与设计哲学 在嵌入式系统开发,尤其是汽车电子、工业控制这类对可靠性要求严苛的领域,系统死机或程序跑飞带来的后果往往是灾难性的。想象一下,一辆行驶中的汽车,其发动…

作者头像 李华
网站建设 2026/6/28 15:52:42

如何破解夸克网盘自动签到失效难题?终极实战指南

如何破解夸克网盘自动签到失效难题?终极实战指南 【免费下载链接】quark_auto_save 夸克网盘签到、自动转存、命名整理、发推送提醒和刷新媒体库一条龙 项目地址: https://gitcode.com/gh_mirrors/qu/quark_auto_save 挑战启程:当自动签到功能突然…

作者头像 李华
网站建设 2026/6/28 15:51:05

深入解析以太网CPU代理(GWCA)数据接收路径:描述符、仲裁与多播

1. 项目概述与核心价值在嵌入式网络系统,尤其是工业控制、车载网关或电信设备这类对实时性和可靠性要求极高的领域,数据接收路径的设计往往是决定整个系统性能上限的关键。想象一下,一个繁忙的十字路口,如果交通信号灯&#xff08…

作者头像 李华