ホームページ  >  記事  >  バックエンド開発  >  MongoDB Atlas への Golang mgo 接続が「到達可能なサーバーがありません」エラーで失敗し続けるのはなぜですか?

MongoDB Atlas への Golang mgo 接続が「到達可能なサーバーがありません」エラーで失敗し続けるのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-27 19:18:13408ブラウズ

Why Does My Golang mgo Connection to MongoDB Atlas Keep Failing with a

Golang mgo を使用した MongoDB Atlas への接続: レプリカ セットへの永続的な「到達可能なサーバーがありません」

このエラー メッセージは、通常、接続しようとすると表示されますGolang の mgo ドライバーを使用して MongoDB Atlas レプリカ セットにコピーします。この問題を解決するには、次の手順を検討してください。

以下に示す mgo コード スニペットを使用します。

import (
    "gopkg.in/mgo.v2"
    "crypto/tls"
    "net"
)

// Configure TLS settings
tlsConfig := &tls.Config{}

// Initialize the DialInfo object
dialInfo := &mgo.DialInfo{
    Addrs: []string{"prefix1.mongodb.net:27017", 
                    "prefix2.mongodb.net:27017",
                    "prefix3.mongodb.net:27017"},
    Database: "authDatabaseName",
    Username: "user",
    Password: "pass",
}

// Override the default DialServer method
dialInfo.DialServer = func(addr *mgo.ServerAddr) (net.Conn, error) {
    conn, err := tls.Dial("tcp", addr.String(), tlsConfig)
    return conn, err
}

// Establish the connection using DialWithInfo
session, err := mgo.DialWithInfo(dialInfo)

単一のレプリカ セット メンバーをシードとして指定することも同様に有効であることに注意してください。オプション:

Addrs: []string{"prefix2.mongodb.net:27017"}

さらに詳しい情報については、以下を参照してください。リソース:

  • [tls.Dial()](https://golang.org/pkg/crypto/tls/#Dial)
  • [DialInfo](https:// godoc.org/gopkg.in/mgo.v 2#DialInfo)
  • [DialWithInfo](https://godoc.org/gopkg.in/mgo.v2#DialWithInfo)

更新:

または、 mgo.ParseURL() メソッドを使用して、MongoDB Atlas URI 文字列を解釈できます。ただし、現在 SSL はサポートされていません。

回避策として、解析する前に ssl=true パラメータを削除できます。

// URI without ssl=true
var mongoURI = "mongodb://username:[email protected],prefix2.mongodb.net,prefix3.mongodb.net/dbName?replicaSet=replName&authSource=admin"

dialInfo, err := mgo.ParseURL(mongoURI)

// Subsequent code remains similar to the previous example.

以上がMongoDB Atlas への Golang mgo 接続が「到達可能なサーバーがありません」エラーで失敗し続けるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。