Maison > développement back-end > Golang > le corps du texte

Comment obtenir les détails de l'erreur de l'insertion SQL effectuée dans Go ?

WBOY
Libérer: 2024-02-09 13:27:21
avant
1187 Les gens l'ont consulté

如何获取在 Go 中完成的 SQL 插入的错误详细信息?

L'éditeur php Yuzai peut parfois rencontrer des erreurs lors de l'utilisation du langage Go pour l'insertion SQL. Dans ce cas, il est important de connaître les détails de l’erreur pour localiser et résoudre le problème. Heureusement, le langage Go offre un moyen simple d'obtenir les détails des erreurs d'insertion SQL. En utilisant la méthode Stmt.Exec dans le package base de données/sql, nous pouvons obtenir l'objet d'erreur lorsqu'une erreur se produit. Ensuite, nous pouvons utiliser la méthode Error de l’interface d’erreur pour obtenir les détails de l’erreur. Cette méthode peut renvoyer une chaîne contenant une description spécifique de l'erreur, nous permettant de mieux comprendre et résoudre le problème.

Contenu de la question

J'essaie d'insérer des données dans une base de données à l'aide de go. En raison de la nature des données (exportation importante depuis un autre outil), je me heurte parfois à certaines limitations du modèle.

Utilisez le code go suivant

_, err := db.exec(query, params...)
if err != nil {
    log.print(err)
}
Copier après la connexion

Je viens d'obtenir un résultat comme celui-ci

2023/03/10 09:40:26 pq: insert or update on table "table" violates foreign key constraint "table_constraint"
exit status 1
Copier après la connexion

Quand je fais la même insertion depuis pgadmin, j'obtiens la même erreur mais aussi des informations détaillées .

DETAIL:  Key (id)=(abc) is not present in table "table_2".
Copier après la connexion

Existe-t-il un moyen d'obtenir ces informations détaillées ? J'ai vérifié la documentation mais je n'ai rien trouvé, mais peut-être existe-t-il un moyen ?

Solution de contournement

Habituellement, le pilote de base de données que vous utilisez aura un type d'erreur personnalisé. Vous pouvez modifier le champ err 值断言为此错误类型,然后根据驱动程序的实现,您应该能够收集有关该问题的更多详细信息。例如,当使用 github.com/lib/pq 时,可以断言 *pq.error 并阅读其 detail par :

_, err := db.Exec(query, params...)
if err != nil {
    if e, ok := err.(*pq.Error); ok {
        log.Print(e.Detail)
    }
}
Copier après la connexion

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!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!