PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Hat der von db.Exec(...) zurückgegebene Fehler einen Code?

Der lib/pq Paket kann Fehler des Typs *pq.Error zurückgeben , was eine Struktur ist. Wenn dies der Fall ist, können Sie alle seine Felder verwenden, um nach Einzelheiten des Fehlers zu suchen.

So kann es gemacht werden:

if err, ok := err.(*pq.Error); ok {
    // Here err is of type *pq.Error, you may inspect all its fields, e.g.:
    fmt.Println("pq error:", err.Code.Name())
}

pq.Error hat die folgenden Felder:

type Error struct {
    Severity         string
    Code             ErrorCode
    Message          string
    Detail           string
    Hint             string
    Position         string
    InternalPosition string
    InternalQuery    string
    Where            string
    Schema           string
    Table            string
    Column           string
    DataTypeName     string
    Constraint       string
    File             string
    Line             string
    Routine          string
}

Die Bedeutung und möglichen Werte dieser Felder sind Postres-spezifisch und die vollständige Liste finden Sie hier:Felder für Fehler- und Hinweismeldungen