Maison  >  Article  >  développement back-end  >  Comment identifier les erreurs « La base de données n'existe pas » avec le pilote Postgres ?

Comment identifier les erreurs « La base de données n'existe pas » avec le pilote Postgres ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-02 17:03:29999parcourir

How to Identify

Détermination du code d'une erreur renvoyée par db.Exec(...)

En cours de suppression d'une base de données à l'aide de Postgres driver (lib/pq), une tentative est faite pour faire la différence entre les erreurs ordinaires et les erreurs « la base de données n'existe pas ». Pour ce faire, la question suivante se pose :

Existe-t-il une variable ou un mécanisme constant qui peut être utilisé pour identifier si l'erreur renvoyée indique que la base de données n'existe pas, ou une analyse manuelle de la chaîne d'erreur est-elle nécessaire ?

Bien que la documentation Postgres ne mentionne pas spécifiquement les codes d'erreur « la base de données n'existe pas », le package lib/pq renvoie des erreurs de type *pq.Error, une structure avec divers champs fournissant des informations détaillées sur les erreurs.

Pour vérifier les codes d'erreur et effectuer l'action conditionnelle souhaitée, procédez comme suit :

<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>

La structure *pq.Error comprend les champs suivants, chacun contenant des informations et des valeurs spécifiques à Postres :

<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>

La liste complète des significations et des valeurs possibles pour ces champs peut être trouvée dans la documentation Postgres à l'adresse : Champs de message d'erreur et d'avis.

En utilisant ces champs, il est possible d'identifier avec précision et gérez les conditions d'erreur souhaitées lors de l'utilisation du pilote Postgres pour les opérations de base de données.

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