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