2017-07-27 3 views
0

J'ai une question concernant les messages d'erreur dans PostgreSQL. J'ai remarqué qu'en cas d'échec PostgreSQL fait un rapport sous forme de message texte mais il ne contient pas d'identifiant de code d'erreur. Par exemple:Configuration des messages d'erreur PostgreSQL

ERROR: Relation "mytable" already exists or 
ERROR: duplicate key value violates unique constraint "id" 

Pourriez-vous s'il vous plaît suggérer un moyen de rendre PostgreSQL y compris le code d'erreur natif id aux messages, par exemple comme suit:

42P07 ERROR: Relation "mytable" already exists or 
23505 ERROR: duplicate key value violates unique constraint "id" 

.

Est-ce possible?

Merci d'avance.

+0

Semble avoir suivi à https://stackoverflow.com/q/45353684/398670 –

Répondre

2

Vous pouvez modifier le paramètre log_error_verbosity dans le fichier postgresql.conf pour modifier la quantité d'informations consignées pendant les erreurs. Par défaut, sa valeur est default. Vous pouvez le modifier en commentaire pour inclure plus d'informations sur les erreurs.

+0

Merci pour une réponse rapide. J'ai changé le paramètre ** log_error_verbosity ** et j'ai vu que le format des entrées du journal dans le répertoire pg_log a été modifié. Ces messages contiennent maintenant l'ID de code d'erreur PG. Mais quand j'exécute une mauvaise commande dans psql ou que j'essaie d'obtenir un message d'erreur via le pilote ** ODBC ** _SQLGetDiagRec() _, j'obtiens toujours le message d'erreur sans ID d'erreur Postgresql natif. Pourriez-vous suggérer autre chose? –

+0

Pour obtenir les codes d'erreur dans psql, utilisez d'abord '\ set VERBOSITY verbose' dans l'invite psql. Ensuite, essayez d'exécuter de mauvaises commandes. –