草庐IT

MongoDB Atlas Golang mgo包 "No reachable servers"错误

coder 2024-07-12 原文

尝试连接到我的 MongoDB Atlas 数据库时,我不断收到以下错误。

no reachable servers
exit status 1

我正在运行与 mgo 兼容的 MongoDB 3.4 版。 我已将 MongoDB Atlas 上的所有 IP 地址列入白名单,包括我自己的。
我在 MongoDB Atlas 上创建了一个名为 'root' 的用户,具有管理员权限。
我在 Ubuntu 18.04 上运行,我已将我的 DNS 名称服务器设置为 8.8.8.8。
我正在使用来自 github.com/globalsign/mgomgo 社区支持版本。
我的代码如下:

package main

import (
    "fmt"
    "log"

    "github.com/globalsign/mgo"
    "github.com/globalsign/mgo/bson"
)

func main() {
    database := "bookstore"
    collection := "books"
    user := "root"
    pword := "root"
    url := "mongodb://" + user + ":" + pword + "@<prefix>.mongodb.net:27017/" + database + "?w=majority"

    session, err := mgo.Dial(url)
    if err != nil {
        log.Fatal(err)
    } else {
                fmt.Println("Success.")
        }
}

我查看了以下问题。这些不能解决我的问题:
CreateSession: no reachable servers - mgo
How to solve panic: no reachable servers
Connecting to MongoDB Atlas using Golang mgo: Persistent no reachable server to replica set
Golang / MGO -- panic: no reachable servers
No reachable servers on static linked go binary
Go and MongoDB connection won't work with panic log "no reachable server"
No reachable servers on static linked go binary
How to use new URL from mongodb 3.6 to connect from golang
How to connect to remote Mongodb server
非常感谢任何帮助!

最佳答案

一个问题是 MongoDB Connection String URI你用来连接到Atlas簇。

MongoDB连接字符串格式有两种:

DNS 种子列表格式较短,因为它利用 DNS 发现可用服务器。为了利用 DNS 种子列表,请使用 mongodb+srv: 的连接字符串前缀,而不是标准的 mongodb:

根据您发布的代码段,您似乎在混合使用这两种格式。如果您尝试使用 DNS 种子列表格式,则需要指定 mongodb+srv:,如果您尝试使用标准格式,则需要指定其他主机。例如:

"mongodb://FOO-shard-00-00-BAR.mongodb.net:27017,FOO-shard-00-01-BAR.mongodb.net:27017,FOO-shard-00-02-BAR.mongodb.net:27017/test?replicaSet=FOO-shard-0"

关于这一点,您还使用了 globalsign/mgo司机。目前,它不支持 DNS 种子列表格式,请参阅 globalsign/mgo/issues#112 .此外,globalsign/mgo 目前仅对 MongoDB v4.0+ 提供实验性支持。

你可以尝试使用mongo-go-driver相反,如果您打算使用 DNS 种子列表连接格式,和/或使用 MongoDB v3.6+(目前最新版本的 MongoDB 是 v4.2)

关于MongoDB Atlas Golang mgo包 "No reachable servers"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57632805/

有关MongoDB Atlas Golang mgo包 "No reachable servers"错误的更多相关文章

  1. ruby-on-rails - rails : "missing partial" when calling 'render' in RSpec test - 2

    我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou

  2. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  3. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  4. ruby - 检查 "command"的输出应该包含 NilClass 的意外崩溃 - 2

    为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar

  5. ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant" - 2

    我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test

  6. ruby-on-rails - 相关表上的范围为 "WHERE ... LIKE" - 2

    我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que

  7. ruby-on-rails - 如何在 Rails View 上显示错误消息? - 2

    我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c

  8. 使用 ACL 调用 upload_file 时出现 Ruby S3 "Access Denied"错误 - 2

    我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file

  9. ruby-on-rails - 错误 : Error installing pg: ERROR: Failed to build gem native extension - 2

    我克隆了一个rails仓库,我现在正尝试捆绑安装背景:OSXElCapitanruby2.2.3p173(2015-08-18修订版51636)[x86_64-darwin15]rails-v在您的Gemfile中列出的或native可用的任何gem源中找不到gem'pg(>=0)ruby​​'。运行bundleinstall以安装缺少的gem。bundleinstallFetchinggemmetadatafromhttps://rubygems.org/............Fetchingversionmetadatafromhttps://rubygems.org/...Fe

  10. ruby - #之间? Cooper 的 *Beginning Ruby* 中的错误或异常 - 2

    在Cooper的书BeginningRuby中,第166页有一个我无法重现的示例。classSongincludeComparableattr_accessor:lengthdef(other)@lengthother.lengthenddefinitialize(song_name,length)@song_name=song_name@length=lengthendenda=Song.new('Rockaroundtheclock',143)b=Song.new('BohemianRhapsody',544)c=Song.new('MinuteWaltz',60)a.betwee

随机推荐