Maison  >  Article  >  développement back-end  >  Comment gérer les erreurs « La base de données n'existe pas » avec pq.Error dans Postgres ?

Comment gérer les erreurs « La base de données n'existe pas » avec pq.Error dans Postgres ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-03 07:33:02495parcourir

How to Handle

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 :

  • Message : la chaîne du message d'erreur
  • Détail : des informations détaillées sur l'erreur
  • Astuce : un indice sur la façon de résoudre l'erreur
  • Position : La position dans la requête d'entrée où l'erreur s'est produite
  • Où : La source de l'erreur dans la requête

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn