Mongodb Error: queryTxt ETIMEOUT xxxx.wwwdz.mongodb.net

背景

每天都能遇到奇怪的问题,做个记录,以便有缘人能得到帮助!
换了一台电脑开发nextjs程序。需要连接mongodb数据,对数据进行增删改查。
上一台电脑好好的程序,新电脑死活连不上mongodb数据库。同一套代码,没任何修改,搞得我怀疑人生了,打开浏览器进入mongodb官网毫无问题,也能进入线上系统查看数据,网络应该是没问题。
于是我尝试了一下手机热点,这次代码能正常跑起来,连接数据库了!!!是不是很无语?
又换回家里的wifi,嘿,又连不上mongodb数据了!!!
详细报错信息:

Error: queryTxt ETIMEOUT xxx.wwwdz.mongodb.net
    at QueryReqWrap.onresolve [as oncomplete] (node:internal/dns/promises:291:17)
    at QueryReqWrap.callbackTrampoline (node:internal/async_hooks:130:17) {
  errno: undefined,
  code: 'ETIMEOUT',
  syscall: 'queryTxt',
  hostname: 'xxx.wwwdz.mongodb.net'
}

分析解决

于是我开始在网络上找有没有人遇到跟我一样的问题.
运气不错,在mongodb的官方论坛找了一个帖子,小哥遇到了跟我差不多的情况,同一套代码,某一天突然就连不上数据库了!----链接
大概看了一下说是DNS问题,于是我就按上面提示在命令行输入了两行命令

1. 检查srv有没有问题
nslookup -query=srv _mongodb._tcp.xxx.fti4a.mongodb.net
2. 检查txt有没有问题
nslookup -query=txt _mongodb._tcp.xxx.fti4a.mongodb.net

正产返回结果:

服务器:  one.one.one.one
Address:  1.1.1.1

mongodb.net
        primary name server = ns-761.awsdns-31.net
        responsible mail addr = awsdns-hostmaster.amazon.com
        serial  = 1
        refresh = 7200 (2 hours)
        retry   = 900 (15 mins)
        expire  = 1209600 (14 days)
        default TTL = 60 (1 min)

如果有问题,会显示 server: unknow, 连接失败之类(懒得复现了,反正一看就知道连接失败了)

从而定位问题就是DNS!!!
搜一下公开的DNS,有百度,阿里,腾讯大厂的DNS。
于是开始更换DNS:

1. win + R 输入 ncpa.cpl 回车,出现网络连接中心
2. 因为我的是wifi,所以点 WLAN => 属性 => 选中Internet 协议版本4(TCP/IP4)-> 点 属性
3. 使用下面的DNS服务地址:1.1.1.1,备用的我用的是114的,114.114.114.114

重启一下电脑,打开powershell,或者命令行,检查一下srv,txt是不是通的

nslookup -query=srv _mongodb._tcp.xxx.fti4a.mongodb.net
nslookup -query=txt _mongodb._tcp.xxx.fti4a.mongodb.net

两个命令都没问题,于是打开vscode,运行代码,正常连接数据库!!!没问题了。

总结

一天天的都遇到一些什么拉机问题。。。浪费时间啊。

你可能感兴趣的:(error,react,mongodb,数据库)