sql >> Databasteknik >  >> NoSQL >> MongoDB

Golang / MGO -- panik:inga nåbara servrar

Kör följande version av din postade kod. Försök att inte ändra koden, åtminstone inte ändra positionen för radnumren. På så sätt, om du lägger upp en stacktrace, kommer siffrorna att matcha.

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")
    }
}

När MongoDB är uppe ser jag:

enter main - connecting to mongo
Got a collection object
Connected

När MongoDB är nere ser jag:

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

Om du inte ser samma beteende, posta resultatet, inklusive paniken du ser.




  1. Hur implementerar man mjuk (logisk) borttagning med MongoDB och Spring?

  2. Mongoose välj fält att returnera från findOneAndUpdate

  3. Mongodb får sista kombinationen i aggregeringsramverket

  4. MongoDB 4.0 JRException:"Markör"-alternativet krävs, förutom för aggregering med förklara-argumentet