sql >> Databáze >  >> NoSQL >> MongoDB

Golang / MGO -- panika:žádné dostupné servery

Spusťte následující verzi zaslaného kódu. Pokuste se kód neupravovat, alespoň neměnit pozici čísel řádků. Tímto způsobem, pokud odešlete stacktrace, čísla se budou shodovat.

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

Když je MongoDB aktivní, vidím:

enter main - connecting to mongo
Got a collection object
Connected

Když MongoDB nefunguje, vidím:

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

Pokud nevidíte stejné chování, zveřejněte výstup, včetně paniky, kterou vidíte.




  1. Návrhy na jednoduché řešení distribuovaného ukládání do mezipaměti .NET

  2. Podmíněné řazení Mongodb

  3. Push and Set Operations v Same MongoDB Update

  4. Jak získat data Mongo data pomocí agregované MongoDB