Lors de la tentative de suppression d'une base de données avec db.Exec("DROP DATABASE dbName;" ) à l'aide du pilote postgres (lib/pq), il est utile de faire la différence entre les erreurs attendues (par exemple, "la base de données n'existe pas") et les erreurs inattendues.
Pour déterminer le code d'erreur spécifique renvoyé, il est nécessaire d'inspecter l'erreur renvoyée. Le package lib/pq renvoie des erreurs de type *pq.Error, qui est une structure. Cette structure permet d'accéder à des informations détaillées sur l'erreur, y compris le code d'erreur.
<code class="go">if err, ok := err.(*pq.Error); ok { // Here err is of type *pq.Error and you can inspect its fields fmt.Println("pq error code:", err.Code.Name()) }</code>
La structure *pq.Error comporte plusieurs champs qui fournissent des informations sur l'erreur :
<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>
Malheureusement, il n'y a pas de code d'erreur spécifique pour les erreurs « la base de données n'existe pas » dans PostgreSQL. Au lieu de cela, vous pouvez rencontrer des erreurs telles que :
Comme il n'y a pas de code d'erreur dédié, vous devrez peut-être analyser manuellement le message d'erreur et rechercher des expressions clés telles que « la base de données n'existe pas » ou « table ou vue introuvable ».
<code class="go">if strings.Contains(err.Message, "database does not exist") { // Handle database non-existence error }</code>
En inspectant les champs *pq.Error et en analysant manuellement le message d'erreur, vous pouvez gérer efficacement les erreurs d'inexistence de la base de données et effectuer les actions conditionnelles approprié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!