Ermitteln des Codes eines von db.Exec(...) zurückgegebenen Fehlers
Beim Löschen einer Datenbank mithilfe von Postgres Treiber (lib/pq) wird versucht, zwischen gewöhnlichen Fehlern und „Datenbank existiert nicht“-Fehlern zu unterscheiden. Um dies zu erreichen, stellt sich die folgende Frage:
Gibt es eine konstante Variable oder einen Mechanismus, mit dem ermittelt werden kann, ob der zurückgegebene Fehler darauf hinweist, dass die Datenbank nicht vorhanden ist, oder ist eine manuelle Analyse der Fehlerzeichenfolge erforderlich?
Während in der Postgres-Dokumentation die Fehlercodes „Datenbank existiert nicht“ nicht ausdrücklich erwähnt werden, gibt das lib/pq-Paket Fehler vom Typ *pq.Error zurück, eine Struktur mit verschiedenen Feldern, die detaillierte Fehlerinformationen liefern.
Um nach Fehlercodes zu suchen und die gewünschte bedingte Aktion auszuführen, gehen Sie wie folgt vor:
<code class="go">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()) }</code>
Die *pq.Error-Struktur enthält die folgenden Felder, die jeweils Postres-spezifische Informationen und Werte enthalten:
<code class="go">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 }</code>
Die vollständige Liste der Bedeutungen und möglichen Werte dieser Felder finden Sie in der Postgres-Dokumentation unter: Fehler- und Hinweismeldungsfelder.
Durch die Verwendung dieser Felder ist eine genaue Identifizierung möglich und behandeln Sie die gewünschten Fehlerbedingungen, wenn Sie den Postgres-Treiber für Datenbankoperationen verwenden.
Das obige ist der detaillierte Inhalt vonWie erkennt man den Fehler „Datenbank existiert nicht' mit dem Postgres-Treiber?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!