背景
每天都能遇到奇怪的问题,做个记录,以便有缘人能得到帮助!
换了一台电脑开发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,运行代码,正常连接数据库!!!没问题了。
总结
一天天的都遇到一些什么拉机问题。。。浪费时间啊。