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

L'errore restituito da db.Exec(...) ha un codice?

Il lib/pq il pacchetto può restituire errori di tipo *pq.Error , che è una struttura. In tal caso, puoi utilizzare tutti i suoi campi per esaminare i dettagli dell'errore.

Ecco come si può fare:

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 ha i seguenti campi:

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
}

Il significato e i possibili valori di questi campi sono specifici di Postres e l'elenco completo può essere trovato qui:Campi dei messaggi di errore e di avviso