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

Golang连接MongoDB报‘no reachable servers’错误的排查方案

问题:执行go run main.go出现"no reachable servers"错误的排查方案

按照YouTube教程操作,执行go run main.go后出现"no reachable servers"错误,请问该如何排查此问题?是否需要将localhost替换为MongoDB URI?以下是我的源代码:

var rnd *renderer.Render
var db *mgo.Database

const (
    hostName       string = "localhost"
    dbName         string = "demo_todo"
    collectionName string = "todo"
    port           string = ":3000"
)

func init() {
    rnd = renderer.New()
    sess, err := mgo.Dial(hostName)
    checkErr(err)
    sess.SetMode(mgo.Monotonic, true)
    db = sess.DB(dbName)
}

func main() {
    stopChan := make(chan os.Signal, 1)
    signal.Notify(stopChan, os.Interrupt)

    r := chi.NewRouter()
    r.Use(middleware.Logger)
    r.Get("/", homeHandler)

    r.Mount("/todo", todoHandlers())

    srv := &http.Server{
        Addr:         port,
        Handler:      r,
        ReadTimeout:  60 * time.Second,
        WriteTimeout: 60 * time.Second,
        IdleTimeout:  60 * time.Second,
    }

    go func() {
        log.Println("Listening on port ", port)
        if err := srv.ListenAndServe(); err != nil {
            log.Printf("listen: %s\n", err)
        }
    }()
}

排查方案与解决办法

  • 确认MongoDB服务是否运行
    先检查本地MongoDB服务状态:

    • Windows:打开「服务」列表,找到MongoDB服务,确认状态为「正在运行」,未启动则手动启动。
    • Mac(brew安装):执行brew services list查看MongoDB状态,未启动则用brew services start mongodb-community启动。
    • Linux:执行systemctl status mongod,未启动则用sudo systemctl start mongod启动。
  • 检查MongoDB连接地址是否正确
    代码里的localhost仅适用于本地默认端口(27017)运行的MongoDB:

    • 若使用远程MongoDB服务(如MongoDB Atlas),必须把hostName替换成完整的MongoDB URI,格式类似mongodb+srv://<用户名>:<密码>@集群地址/。
    • 若本地MongoDB修改了默认端口,地址要写成localhost:自定义端口,比如localhost:27018。
  • 验证MongoDB连接是否正常
    用MongoDB官方工具mongosh测试连接:执行mongosh localhost,若能进入交互界面,说明服务和地址没问题;若连接失败,根据报错信息排查(如端口被占用、防火墙拦截)。

  • 优化代码错误提示
    修改init函数里的错误处理,输出更详细的连接失败信息:

    sess, err := mgo.Dial(hostName)
    if err != nil {
        log.Fatalf("MongoDB连接失败: %v", err)
    }
    

    这样能获取更具体的失败原因,帮助快速定位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:57:29