2012-04-24 2 views
1

Par exemple, j'ai un champ NOT NULL dans la base de données. J'essaie d'insérer NULL VALUE dedans. PostgreSQL dit: ERROR: null value in column "id" violates not-null constraintObtenir des informations détaillées sur l'erreur PostgreSQL pour l'analyse automatique

(ou quelque chose comme ça, dans ma version il speeks en russe, donc je trouve un message d'erreur en anglais dans google).

Comment puis-je obtenir des informations supplémentaires sur les erreurs? Première partie de la table et du schéma. Je dois analyser cette erreur et renvoyer la table, le schéma et le champ où l'erreur s'est produite à un module supérieur de mon système. Cette information est assez facile à trouver dans Oracle et SQL Server, mais comment les trouver en postgre?

Même problème avec UNIQUE VIOLATION ERROR et autres. Cet insert ou cette mise à jour peut faire partie de la commande de gros lot, donc sans information de la base de données, je ne peux pas localiser la requête où une erreur s'est produite.

+0

Quel programme frontal utilisez-vous? (en psql vous pouvez utiliser \ d pour obtenir des définitions de table) BTW: l'erreur que vous me donnez me semblait plutôt évidente. BTW: dans la plupart des cas, les messages d'erreur en anglais (pour * any * program) sont de bons termes de recherche pour google, ce qui semble une bonne raison de préférer les versions anglaises. – wildplasser

+0

Sur l'anglais je sais, merci. A propos de "plutôt évident". La tâche est: quand une erreur se produit, disons atomiquement au module supérieur "Erreur dans la table XX shema XX champ YZ". Je ne trouve pas cette information dans la défenition de l'erreur Postgre. En tant que client, j'utilise le pilote npgsql. – Yavanosta

+0

Si vous utilisez une sorte d'interface à Embedded SQL: vous pouvez jeter un oeil dans les http://code.postgresql.org/docs/9.1/interactive/errcodes-appendix.html codes d'erreur (normalisés), le SQLCA pourrait offrir des informations contextuelles supplémentaires: http://www.postgresql.org/docs/9.1/static/ecpg-errors.html#ECPG-SQLCA. Je ne connais pas le pilote npgsql, mais tous les pilotes s'appuient sur la définition dans les gestionnaires esql. (ils peuvent ou non * utiliser * toutes les informations, mais c'est une autre affaire ;-) – wildplasser

Répondre

1

Vous devez utiliser une expression régulière et un message d'erreur d'analyse. Il n'y a pas d'autre possibilité maintenant. C'est dans ma ToDo, mais il a besoin d'un temps libre.

+0

Oui, j'utilise RegExp pour une erreur d'analyse. Mais le message d'erreur UNIQUE VIOLATION ERROR et NOT NULL VIOLATION ERROR ne contient pas cette information. Seule 'ERREUR: la valeur null dans la colonne" id "ne respecte pas la contrainte non-nulle' Il n'y a aucune information dans la table de la sorcière" id "se trouve. – Yavanosta

Questions connexes