sql >> Database teknologi >  >> NoSQL >> MongoDB

Golang / MGO -- panik:ingen tilgængelige servere

Kør følgende version af din indsendte kode. Prøv ikke at ændre koden, i det mindste ikke ændre placeringen af ​​linjenumrene. På den måde, hvis du poster en stacktrace, vil tallene matche.

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 er oppe, ser jeg:

enter main - connecting to mongo
Got a collection object
Connected

Når MongoDB er nede, ser jeg:

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

Hvis du ikke ser den samme adfærd, skal du poste outputtet, inklusive den panik, du ser.




  1. findOneAndUpdate er ikke en funktion

  2. Mongo::OperationFailure - skal logge på, når du bruger from_uri

  3. mongoose:Sortering efter id

  4. MongoDB og Asp Core opdaterer kun en nøgle:værdipar i stedet for hele modellen