sql >> Database teknologi >  >> RDS >> PostgreSQL

Har fejlen returneret af db.Exec(...) en kode?

lib/pq pakken kan returnere fejl af typen *pq.Error , som er en struct. Hvis det gør det, kan du bruge alle dets felter til at inspicere for detaljer om fejlen.

Sådan kan det gøres:

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 har følgende felter:

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
}

Betydningen og de mulige værdier af disse felter er Postres-specifikke, og den fulde liste kan findes her:Fejl- og meddelelsesfelter



  1. VÆLG række efter DATEPART()

  2. Tjek, om et Postgres JSON-array indeholder en streng

  3. Sådan søger du i en SQL-tabel efter en sætning

  4. Er der en måde at 'lytte' efter en databasehændelse og opdatere en side i realtid?