错误:querySrv ENOTFOUND _mongodb._tcp.dbname.fzofb.mongodb.net

Posted

技术标签:

【中文标题】错误:querySrv ENOTFOUND _mongodb._tcp.dbname.fzofb.mongodb.net【英文标题】:Error: querySrv ENOTFOUND _mongodb._tcp.dbname.fzofb.mongodb.net 【发布时间】:2021-04-13 19:56:08 【问题描述】:

我正在学习 Node.js,刚刚开始使用 MongoDB。

我正在与我创建的 MongoDB 集群建立连接

const dbURI = 'mongodb+srv://testuser:test1234@nodelearning.fzofb.mongodb.net/mydb?retryWrites=true&w=majority';
mongoose.connect(dbURI,  useNewUrlParser: true, useUnifiedTopology: true )
    .then((result) => console.log('connected to db'))
    .catch((err) => console.log(err));

当我运行它nodemon app 时,我得到了这个错误:

错误:querySrv ENOTFOUND _mongodb._tcp.mydb.fzofb.mongodb.net 在 QueryReqWrap.onresolve [as oncomplete] (node:dns:206:19) errno: undefined, code: 'ENOTFOUND', syscall: 'querySrv', 主机名:'_mongodb._tcp.mydb.fzofb.mongodb.net'

【问题讨论】:

这能回答你的问题吗? How to fix 'Error: querySrv EREFUSED' when connecting to MongoDB Atlas? 【参考方案1】:

FIX : : 以前我的集群密码是“chaudhary@786”,其中包含 特殊字符“@”,由此连接的罗盘字符串 编译器感到困惑,因此在下一回合我将密码更改为 “gghjkl98”,即没有任何特殊字符。我得到了连接 没有任何错误。

解决方案:集群密码不应包含 \backslash 等字符 或@或任何其他字符

【讨论】:

【参考方案2】:

您需要将连接字符串密码中的特殊字符转换为百分比编码。

我在使用 mongodb-compass 时遇到了同样的问题。对我来说,这是不正确的连接字符串格式。所以就我而言,它需要将我密码中的@ 符号转换为%40(百分比编码)。

您可以在here. 和here 中了解更多信息。

【讨论】:

非常感谢,它帮助了我。【参考方案3】:

如果您尝试访问数据库的 IP 地址不在 IP 访问列表中,则会发生此错误。转到 MongoDB 登录并在安全下单击网络访问并检查您的 IP 是否已添加到那里。

【讨论】:

【参考方案4】:

如果启用,请尝试禁用 ***。它帮助了我。

【讨论】:

【参考方案5】:

另外,如果您的 mongodb Atlas 集群在一段时间后处于非活动状态。它可能会暂停,然后当您运行服务器时,它会返回您遇到的错误。

所以另一个赌注是登录您的 Atlas 帐户并确认它是否没有被暂停。好吧,我的这个选项只有在尝试了上述选项后才应该考虑。

【讨论】:

@Bracken 这怎么不是问题的答案?我遇到了同样的错误,这解决了我的问题。再清楚不过了。 抱歉,您的帖子确实包含答案,但您已经以对上一个答案的评论形式写了它。试着把你的答案写在一个独立的庄园里,就好像它们可能是最佳答案一样。不要以“也”开头。【参考方案6】:

我有同样的问题。我使用的是最新的srv 字符串。我不知道这是否会帮助你。但是使用旧的

mongodb://<username>:<password>@cluster0-shard-00-00.2pznz.mongodb.net:27017,cluster0-shard-00-01.2pznz.mongodb.net:27017,cluster0-shard-00-02.2pznz.mongodb.net:27017/myFirstDatabase?ssl=true&replicaSet=atlas-s5orlv-shard-0&authSource=admin&retryWrites=true&w=majority```

【讨论】:

这条评论帮助我解决了在 WSL2 的本地主机上运行 MongoDB 的问题。通过从连接字符串中删除+srv,连接按预期工作。【参考方案7】:

错误表示代码没有错误。这为您提供了三种潜在的可能性:

    确保您的计算机上有MongoDB installed。 确保您已连接到不公开的 wifi。 请确保您已允许该 IP 进入 MongoDB 的网络访问,如下图所示:

就我而言,我在共享办公空间中连接到公共 wifi。我更改了与我的个人热点的连接,它起作用了。

【讨论】:

以上是关于错误:querySrv ENOTFOUND _mongodb._tcp.dbname.fzofb.mongodb.net的主要内容,如果未能解决你的问题,请参考以下文章

错误:QueryReqWrap.onresolve 处的 querySrv ENODATA _mongodb._tcp.blog-cluster-0hb5z.mongodb.net [as oncom

ENOTFOUND:getaddrinfo ENOTFOUND api.heroku.com api.heroku.com:443 Heroku 创建错误

Nodemailer getaddrinfo ENOTFOUND 错误

发出 HTTPS 请求时出现“错误:getaddrinfo ENOTFOUND”错误

错误的ERR!网络getaddrinfo ENOTFOUND

错误:nodejs 中的 getaddrinfo ENOTFOUND 用于获取调用