コードが開始されたのがわかりましたが、何もわかりませんでした
ご存知のとおり、これはDialInfoのデフォルトのタイムアウトがゼロであるためです。呼び出しは、接続が確立されるのを待って永久にブロックされます。次のコマンドでタイムアウトを指定することもできます:
dialInfo.Timeout = time.Duration(30)
session, err := mgo.DialWithInfo(dialInfo)
現在、到達可能なサーバーがありません
これは、globalsign/mgoが現在SRV接続文字列URIをまだサポートしていないためです。問題112を参照してください。非srv接続URI形式(MongoDB v3.4)を使用できます。関連する質問StackOverflow:41173720を参照してください。
SRV接続URIを使用して接続する場合は、代わりにmongo-go-driverを使用できます(例:
)。mongoURI := "mongodb+srv://admin:[email protected]/dbname?ssl=true&retryWrites=true"
client, err := mongo.NewClient(options.Client().ApplyURI(mongoURI))
if err != nil {
log.Fatal(err)
}
ctx, cancel := context.WithTimeout(context.Background(), 3*time.Second)
defer cancel()
err = client.Connect(ctx)
defer client.Disconnect(ctx)
if err != nil {
log.Fatal(err)
}
database := client.Database("go")
collection := database.Collection("atlas")
上記の例は、現在のバージョンv1.0.0と互換性があります