You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

更换网络后无法连接MongoDB,报ETIMEOUT错误求解决方案

解决MongoDB连接超时(queryTxt ETIMEOUT)的方案

1. 核对主机名拼写一致性

从报错信息看,DNS查询的主机名是clusterta.xcndkot.mongodb.net,但你的连接字符串里用的是clusterInventory.xcndkot.mongodb.net,且报错里的clusterIventory还少了一个字母'n'。请:

  • 打开MongoDB Atlas控制台,复制集群的官方连接字符串,确保主机名完全匹配
  • 修正连接字符串里的拼写错误,避免因域名不匹配导致解析失败

2. 手动测试DNS解析

在终端执行以下命令,验证域名是否能正常解析:

# 测试SRV记录解析
dig clusterInventory.xcndkot.mongodb.net SRV
# 测试TXT记录解析
dig clusterInventory.xcndkot.mongodb.net TXT

如果解析仍然超时,可尝试切换到国内公共DNS(如114.114.114.114),或检查当前网络是否屏蔽了DNS查询的53端口

3. 检查网络与白名单设置

  • 更新MongoDB Atlas的IP白名单:更换网络后公网IP会变化,必须将当前网络的公网IP添加到控制台的IP白名单中
  • 关闭本地防火墙、杀毒软件的网络拦截功能,或暂时禁用代理(若当前网络使用了代理),测试连接
  • 确认当前网络允许访问MongoDB的端口(27017)

4. 简化连接配置并升级依赖

  • Mongoose 6+版本已默认启用useNewUrlParser和useUnifiedTopology,无需手动配置,可直接移除
  • 升级Mongoose到最新稳定版:
npm install mongoose@latest
  • 使用最简代码测试连接:
const mongoose = require('mongoose');
const uri = "mongodb+srv://bryantpirih:<password>@clusterInventory.xcndkot.mongodb.net/?retryWrites=true&w=majority&appName=ClusterTA";

async function connect() {
  try {
    await mongoose.connect(uri);
    console.log("MongoDB Connected");
  } catch (err) {
    console.error(err);
  }
}

connect();

5. 切换到非SRV格式连接字符串

若SRV格式始终解析失败,可在MongoDB Atlas控制台复制标准连接字符串(非SRV),格式示例:

mongodb://bryantpirih:<password>@clusterInventory-shard-00-00.xcndkot.mongodb.net:27017,clusterInventory-shard-00-01.xcndkot.mongodb.net:27017,clusterInventory-shard-00-02.xcndkot.mongodb.net:27017/?ssl=true&replicaSet=atlas-xxxxxx-shard-0&authSource=admin&retryWrites=true&w=majority&appName=ClusterTA

内容的提问来源于stack exchange,提问作者Bryant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 15:31:04