Discord Bot无法连接MongoDB,报querySrv EREFUSED错误求助
检查MongoDB Atlas IP白名单
登录Atlas控制台,进入目标集群的「Network Access」页面,确认是否添加了0.0.0.0/0(允许所有IP访问)。如果仅添加了本地IP,异地环境自然无法连接,即使Compass能正常访问也没用。切换为非SRV格式连接串
SRV格式依赖DNS解析,部分网络或驱动环境可能存在解析问题。在Atlas的「Connect your application」页面,取消勾选「Include SRV record」,复制生成的标准连接串(类似mongodb://user:password@cluster0-shard-00-00.pnqjgso.mongodb.net:27017,cluster0-shard-00-01.pnqjgso.mongodb.net:27017,cluster0-shard-00-02.pnqjgso.mongodb.net:27017/yourdb?ssl=true&replicaSet=atlas-xxxxxx-shard-0&authSource=admin&retryWrites=true&w=majority),替换Bot代码中的连接串,注意替换账号密码和目标数据库名。升级MongoDB Node.js驱动
旧版本驱动可能和Atlas新集群不兼容,导致SRV解析失败。执行npm install mongodb@latest升级到最新稳定版,之后重启Bot测试。更换DNS服务器
部分DNS服务器无法正常解析MongoDB的SRV记录。将系统DNS切换为公共DNS(比如Cloudflare的1.1.1.1或Google的8.8.8.8),重启网络后再运行Bot。确认Atlas集群状态
登录Atlas控制台查看集群状态是否为「Available」,如果集群处于维护或故障状态,等待恢复后再测试。
内容的提问来源于stack exchange,提问作者nuckelan

