pgAdmin 4 无法连接服务器 dns空标签报错解决方案求助
问题根因
报错核心为dns.name.EmptyLabel: A DNS label is empty.,是pgAdmin 4 v6依赖的dnspython组件读取Windows系统DNS配置时,检测到存在空的DNS标签(通常是网卡配置的DNS后缀有空值、或者后缀开头/结尾存在多余的.字符),导致服务启动失败。
解决方案
方案1:修正网卡DNS配置(优先尝试)
- 按下
Win + R快捷键,输入ncpa.cpl回车打开网络连接管理页 - 找到当前正在使用的网卡,右键选择「属性」
- 双击列表中的「Internet 协议版本4 (TCP/IPv4)」,点击弹窗右下角的「高级」按钮
- 切换到「DNS」标签页,做两处检查:
- 检查「此连接的DNS后缀」输入框,确保没有值为空、开头/结尾带
.、存在连续.的情况 - 检查下方「附加这些DNS后缀(按顺序)」列表,删除所有空条目、以及开头/结尾带
.的异常条目
- 检查「此连接的DNS后缀」输入框,确保没有值为空、开头/结尾带
- 逐层保存所有配置后,重启pgAdmin即可正常启动
方案2:修改dnspython源码跳过异常逻辑
如果方案1无法生效,可直接修改pgAdmin内置的dnspython代码跳过错误的DNS配置读取逻辑:
- 打开pgAdmin内置python的第三方库目录:
C:\Program Files\pgAdmin 4\v6\python\lib\site-packages\dns\ - 找到
resolver.py文件,用管理员权限的文本编辑器打开 - 搜索找到
read_registry方法,在方法的第一行添加代码return,直接跳过Windows注册表DNS配置读取逻辑 - 保存文件后重启pgAdmin即可,该修改仅影响pgAdmin自带的python环境,不会改动系统全局配置
方案3:升级pgAdmin版本
pgAdmin 4 v7及以上版本已经修复了该兼容问题,直接卸载现有版本后安装官方最新版即可解决。
内容的提问来源于stack exchange,提问作者Om Prakash
相关产品推荐
相关产品推荐

