Codes d'erreur dans Postgres après db.Exec()
Lors de l'exécution d'une requête à l'aide de db.Exec(), l'erreur renvoyée peut fournir des informations précieuses sur l'état de l'opération. Bien que le message d'erreur réel puisse varier, le pilote Postgres fournit un moyen d'inspecter les codes d'erreur pour des conditions spécifiques.
Accès aux codes d'erreur
Pour accéder au code d'erreur à partir du erreur renvoyée par db.Exec(), vous pouvez taper assert au type *pq.Error puis utiliser son champ Code. Voici un exemple :
<code class="go">if err, ok := err.(*pq.Error); ok { fmt.Println("Error code:", err.Code) }</code>
Code d'erreur pour "La base de données n'existe pas"
Malheureusement, Postgres ne fournit pas de code d'erreur spécifique pour "La base de données n'existe pas" " erreurs. Le champ Code de l'erreur sera probablement défini sur "42P01" (pour "erreur de syntaxe"), mais cela n'est pas garanti.
Vérification des codes d'erreur spécifiques
Comme il n'y a pas de code d'erreur spécifique pour les erreurs « la base de données n'existe pas », vous devrez analyser manuellement la chaîne du message d'erreur vous-même. Vous pouvez utiliser le package strings pour le faire efficacement :
<code class="go">if strings.Contains(err.Error(), "existence") && strings.Contains(err.Error(), "database") { // Database does not exist }</code>
Champs d'erreur supplémentaires
En plus du code d'erreur, le type pq.Error fournit d'autres champs qui peuvent fournir un contexte précieux, tel que :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!