sql >> データベース >  >> NoSQL >> MongoDB

Golang / MGO-パニック:到達可能なサーバーがありません

    投稿したコードの次のバージョンを実行します。少なくとも行番号の位置を変更しないように、コードを変更しないようにしてください。そうすれば、スタックトレースを投稿すると、数値が一致します。

    package main
    
    import (
        "fmt"
        "time"
    )
    
    import (
        "labix.org/v2/mgo"
    )
    
    func connectToMongo() bool {
        ret := false
        fmt.Println("enter main - connecting to mongo")
    
        // tried doing this - doesn't work as intended
        defer func() {
            if r := recover(); r != nil {
                fmt.Println("Detected panic")
                var ok bool
                err, ok := r.(error)
                if !ok {
                    fmt.Printf("pkg:  %v,  error: %s", r, err)
                }
            }
        }()
    
        maxWait := time.Duration(5 * time.Second)
        session, sessionErr := mgo.DialWithTimeout("localhost:27017", maxWait)
        if sessionErr == nil {
            session.SetMode(mgo.Monotonic, true)
            coll := session.DB("MyDB").C("MyCollection")
            if ( coll != nil ) {
                fmt.Println("Got a collection object")
                ret = true
            }
        } else { // never gets here
            fmt.Println("Unable to connect to local mongo instance!")
        }
        return ret
    }
    
    func main() {
        if ( connectToMongo() ) {
            fmt.Println("Connected")
        } else {
            fmt.Println("Not Connected")
        }
    }
    

    MongoDBが起動すると、次のように表示されます:

    enter main - connecting to mongo
    Got a collection object
    Connected
    

    MongoDBがダウンすると、次のように表示されます:

    enter main - connecting to mongo
    Unable to connect to local mongo instance!
    Not Connected
    

    同じ動作が見られない場合は、見たパニックを含む出力を投稿してください。




    1. GCPクラスターからのVPCピアリングを使用してMongoAtlasに接続できません

    2. MongoDBでの多言語データモデリング

    3. 春のデータを使用してクエリを更新するためのカスタムメソッドMongoRepository

    4. マングース選択フィールド(ネスト)