Tous les messages émis par le serveur PostgreSQL™ se voient affectés des codes d'erreur sur cinq caractères. Ces codes suivent les conventions du standard SQL pour les codes « SQLSTATE ».
Les applications qui souhaitent connaître la condition d'erreur survenue peuvent tester le code d'erreur plutôt que récupérer le message d'erreur textuel. Les codes d'erreurs sont moins sujets à changement au fil des versions de PostgreSQL™ et ne dépendent pas de la localisation des messages d'erreur. Seuls certains codes d'erreur produits par PostgreSQL™ sont définis par le standard SQL ; divers codes d'erreur supplémentaires, pour des conditions non définies par le standard, ont été inventés ou empruntés à d'autres bases de données.
Comme le préconise le standard, les deux premiers caractères d'un code d'erreur définissent la classe d'erreurs, les trois derniers indiquent la condition spécifique à l'intérieur de cette classe. Ainsi, une application qui ne reconnaît pas le code d'erreur spécifique peut toujours agir en fonction de la classe de l'erreur.
Tableau A.1, « Codes d'erreur de PostgreSQL™ » liste tous les codes d'erreurs définis dans PostgreSQL™ 9.0.13. (Certains ne sont pas réellement utilisés mais sont définis par le standard SQL.) Les classes d'erreurs sont aussi affichées. Pour chaque classe d'erreur, il y a un code d'erreur « standard » dont les trois derniers caractères sont 000. Ce code n'est utilisé que pour les conditions d'erreurs de cette classe qui ne possèdent pas de code plus spécifique.
Le nom de la constante PL/pgSQL de chaque code erreur est le même que la phrase affichée dans le tableau, les tirets bas étant substitués aux espaces. Par exemple, le code 22012, DIVISION BY ZERO, a comme nom de constante DIVISION_BY_ZERO. Les noms de constante peuvent être écrits en majuscule ou en minuscule. (PL/pgSQL ne fait pas la distinction entre avertissement et erreur au niveau des noms des conditions ; il s'agit des classes 00, 01 et 02.)
Tableau A.1. Codes d'erreur de PostgreSQL™
Code erreur | Signification | Nom de condition |
---|---|---|
Class 00 -- Succès de l'opération | ||
00000 | SUCCESSFUL COMPLETION | successful_completion |
Class 01 -- Avertissement | ||
01000 | WARNING | warning |
0100C | DYNAMIC RESULT SETS RETURNED | dynamic_result_sets_returned |
01008 | IMPLICIT ZERO BIT PADDING | implicit_zero_bit_padding |
01003 | NULL VALUE ELIMINATED IN SET FUNCTION | null_value_eliminated_in_set_function |
01007 | PRIVILEGE NOT GRANTED | privilege_not_granted |
01006 | PRIVILEGE NOT REVOKED | privilege_not_revoked |
01004 | STRING DATA RIGHT TRUNCATION | string_data_right_truncation |
01P01 | DEPRECATED FEATURE | deprecated_feature |
Class 02 -- Pas de données (également une classe d'averissement selon le standard SQL) | ||
02000 | NO DATA | no_data |
02001 | NO ADDITIONAL DYNAMIC RESULT SETS RETURNED | no_additional_dynamic_result_sets_returned |
Class 03 -- Instruction SQL pas encore terminée | ||
03000 | SQL STATEMENT NOT YET COMPLETE | sql_statement_not_yet_complete |
Class 08 -- Problème de connexion | ||
08000 | CONNECTION EXCEPTION | connection_exception |
08003 | CONNECTION DOES NOT EXIST | connection_does_not_exist |
08006 | CONNECTION FAILURE | connection_failure |
08001 | SQLCLIENT UNABLE TO ESTABLISH SQLCONNECTION | sqlclient_unable_to_establish_sqlconnection |
08004 | SQLSERVER REJECTED ESTABLISHMENT OF SQLCONNECTION | sqlserver_rejected_establishment_of_sqlconnection |
08007 | TRANSACTION RESOLUTION UNKNOWN | transaction_resolution_unknown |
08P01 | PROTOCOL VIOLATION | protocol_violation |
Class 09 -- Problème d'action déclenchée | ||
09000 | TRIGGERED ACTION EXCEPTION | triggered_action_exception |
Class 0A -- Fonctionnalité non supportée | ||
0A000 | FEATURE NOT SUPPORTED | feature_not_supported |
Class 0B -- Initialisation de transaction invalide | ||
0B000 | INVALID TRANSACTION INITIATION | invalid_transaction_initiation |
Classe 0F -- Problème de pointeur (Locator) | ||
0F000 | LOCATOR EXCEPTION | locator_exception |
0F001 | INVALID LOCATOR SPECIFICATION | invalid_locator_specification |
Classe 0L -- Granteur invalide | ||
0L000 | INVALID GRANTOR | invalid_grantor |
0LP01 | INVALID GRANT OPERATION | invalid_grant_operation |
Classe 0P -- Spécification de rôle invalide | ||
0P000 | INVALID ROLE SPECIFICATION | invalid_role_specification |
Class 20 -- Case Not Found | ||
20000 | CASE NOT FOUND | case_not_found |
Class 21 -- Violation de cardinalité | ||
21000 | CARDINALITY VIOLATION | cardinality_violation |
Class 22 -- Problème de données | ||
22000 | DATA EXCEPTION | data_exception |
2202E | ARRAY SUBSCRIPT ERROR | array_subscript_error |
22021 | CHARACTER NOT IN REPERTOIRE | character_not_in_repertoire |
22008 | DATETIME FIELD OVERFLOW | datetime_field_overflow |
22012 | DIVISION BY ZERO | division_by_zero |
22005 | ERROR IN ASSIGNMENT | error_in_assignment |
2200B | ESCAPE CHARACTER CONFLICT | escape_character_conflict |
22022 | INDICATOR OVERFLOW | indicator_overflow |
22015 | INTERVAL FIELD OVERFLOW | interval_field_overflow |
2201E | INVALID ARGUMENT FOR LOGARITHM | invalid_argument_for_logarithm |
22014 | INVALID ARGUMENT FOR NTILE FUNCTION | invalid_argument_for_ntile_function |
22016 | INVALID ARGUMENT FOR NTH_VALUE FUNCTION | invalid_argument_for_nth_value_function |
2201F | INVALID ARGUMENT FOR POWER FUNCTION | invalid_argument_for_power_function |
2201G | INVALID ARGUMENT FOR WIDTH BUCKET FUNCTION | invalid_argument_for_width_bucket_function |
22018 | INVALID CHARACTER VALUE FOR CAST | invalid_character_value_for_cast |
22007 | INVALID DATETIME FORMAT | invalid_datetime_format |
22019 | INVALID ESCAPE CHARACTER | invalid_escape_character |
2200D | INVALID ESCAPE OCTET | invalid_escape_octet |
22025 | INVALID ESCAPE SEQUENCE | invalid_escape_sequence |
22P06 | NONSTANDARD USE OF ESCAPE CHARACTER | nonstandard_use_of_escape_character |
22010 | INVALID INDICATOR PARAMETER VALUE | invalid_indicator_parameter_value |
22023 | INVALID PARAMETER VALUE | invalid_parameter_value |
2201B | INVALID REGULAR EXPRESSION | invalid_regular_expression |
2201W | INVALID ROW COUNT IN LIMIT CLAUSE | invalid_row_count_in_limit_clause |
2201X | INVALID ROW COUNT IN RESULT OFFSET CLAUSE | invalid_row_count_in_result_offset_clause |
22009 | INVALID TIME ZONE DISPLACEMENT VALUE | invalid_time_zone_displacement_value |
2200C | INVALID USE OF ESCAPE CHARACTER | invalid_use_of_escape_character |
2200G | MOST SPECIFIC TYPE MISMATCH | most_specific_type_mismatch |
22004 | NULL VALUE NOT ALLOWED | null_value_not_allowed |
22002 | NULL VALUE NO INDICATOR PARAMETER | null_value_no_indicator_parameter |
22003 | NUMERIC VALUE OUT OF RANGE | numeric_value_out_of_range |
22026 | STRING DATA LENGTH MISMATCH | string_data_length_mismatch |
22001 | STRING DATA RIGHT TRUNCATION | string_data_right_truncation |
22011 | SUBSTRING ERROR | substring_error |
22027 | TRIM ERROR | trim_error |
22024 | UNTERMINATED C STRING | unterminated_c_string |
2200F | ZERO LENGTH CHARACTER STRING | zero_length_character_string |
22P01 | FLOATING POINT EXCEPTION | floating_point_exception |
22P02 | INVALID TEXT REPRESENTATION | invalid_text_representation |
22P03 | INVALID BINARY REPRESENTATION | invalid_binary_representation |
22P04 | BAD COPY FILE FORMAT | bad_copy_file_format |
22P05 | UNTRANSLATABLE CHARACTER | untranslatable_character |
2200L | NOT AN XML DOCUMENT | not_an_xml_document |
2200M | INVALID XML DOCUMENT | invalid_xml_document |
2200N | INVALID XML CONTENT | invalid_xml_content |
2200S | INVALID XML COMMENT | invalid_xml_comment |
2200T | INVALID XML PROCESSING INSTRUCTION | invalid_xml_processing_instruction |
Class 23 -- Violation de contrainte d'intégrité | ||
23000 | INTEGRITY CONSTRAINT VIOLATION | integrity_constraint_violation |
23001 | RESTRICT VIOLATION | restrict_violation |
23502 | NOT NULL VIOLATION | not_null_violation |
23503 | FOREIGN KEY VIOLATION | foreign_key_violation |
23505 | UNIQUE VIOLATION | unique_violation |
23514 | CHECK VIOLATION | check_violation |
23P01 | EXCLUSION VIOLATION | exclusion_violation |
Classe 24 -- État de curseur invalide | ||
24000 | INVALID CURSOR STATE | invalid_cursor_state |
Class 25 -- État de transaction invalide | ||
25000 | INVALID TRANSACTION STATE | invalid_transaction_state |
25001 | ACTIVE SQL TRANSACTION | active_sql_transaction |
25002 | BRANCH TRANSACTION ALREADY ACTIVE | branch_transaction_already_active |
25008 | HELD CURSOR REQUIRES SAME ISOLATION LEVEL | held_cursor_requires_same_isolation_level |
25003 | INAPPROPRIATE ACCESS MODE FOR BRANCH TRANSACTION | inappropriate_access_mode_for_branch_transaction |
25004 | INAPPROPRIATE ISOLATION LEVEL FOR BRANCH TRANSACTION | inappropriate_isolation_level_for_branch_transaction |
25005 | NO ACTIVE SQL TRANSACTION FOR BRANCH TRANSACTION | no_active_sql_transaction_for_branch_transaction |
25006 | READ ONLY SQL TRANSACTION | read_only_sql_transaction |
25007 | SCHEMA AND DATA STATEMENT MIXING NOT SUPPORTED | schema_and_data_statement_mixing_not_supported |
25P01 | NO ACTIVE SQL TRANSACTION | no_active_sql_transaction |
25P02 | IN FAILED SQL TRANSACTION | in_failed_sql_transaction |
Classe 26 -- Nom d'instruction SQL invalide | ||
26000 | INVALID SQL STATEMENT NAME | invalid_sql_statement_name |
Classe 27 -- Violation de modification de donnée déclenchée | ||
27000 | TRIGGERED DATA CHANGE VIOLATION | triggered_data_change_violation |
Classe 28 -- Spécification d'autorisation invalide | ||
28000 | INVALID AUTHORIZATION SPECIFICATION | invalid_authorization_specification |
28P01 | INVALID PASSWORD | invalid_password |
Classe 2B -- Descripteurs de privilège dépendant toujours existant | ||
2B000 | DEPENDENT PRIVILEGE DESCRIPTORS STILL EXIST | dependent_privilege_descriptors_still_exist |
2BP01 | DEPENDENT OBJECTS STILL EXIST | dependent_objects_still_exist |
Classe 2D -- Fin de transaction invalide | ||
2D000 | INVALID TRANSACTION TERMINATION | invalid_transaction_termination |
Classe 2F -- Exception dans une routine SQL | ||
2F000 | SQL ROUTINE EXCEPTION | sql_routine_exception |
2F005 | FUNCTION EXECUTED NO RETURN STATEMENT | function_executed_no_return_statement |
2F002 | MODIFYING SQL DATA NOT PERMITTED | modifying_sql_data_not_permitted |
2F003 | PROHIBITED SQL STATEMENT ATTEMPTED | prohibited_sql_statement_attempted |
2F004 | READING SQL DATA NOT PERMITTED | reading_sql_data_not_permitted |
Classe 34 -- Nom de curseur invalide | ||
34000 | INVALID CURSOR NAME | invalid_cursor_name |
Classe 38 -- Exception de routine externe | ||
38000 | EXTERNAL ROUTINE EXCEPTION | external_routine_exception |
38001 | CONTAINING SQL NOT PERMITTED | containing_sql_not_permitted |
38002 | MODIFYING SQL DATA NOT PERMITTED | modifying_sql_data_not_permitted |
38003 | PROHIBITED SQL STATEMENT ATTEMPTED | prohibited_sql_statement_attempted |
38004 | READING SQL DATA NOT PERMITTED | reading_sql_data_not_permitted |
Classe 39 -- Exception dans l'appel d'une routine externe | ||
39000 | EXTERNAL ROUTINE INVOCATION EXCEPTION | external_routine_invocation_exception |
39001 | INVALID SQLSTATE RETURNED | invalid_sqlstate_returned |
39004 | NULL VALUE NOT ALLOWED | null_value_not_allowed |
39P01 | TRIGGER PROTOCOL VIOLATED | trigger_protocol_violated |
39P02 | SRF PROTOCOL VIOLATED | srf_protocol_violated |
Classe 3B -- Exception dans un point de retournement | ||
3B000 | SAVEPOINT EXCEPTION | savepoint_exception |
3B001 | INVALID SAVEPOINT SPECIFICATION | invalid_savepoint_specification |
Classe 3D -- Nom de catalogue invalide | ||
3D000 | INVALID CATALOG NAME | invalid_catalog_name |
Classe 3F -- Nom de schéma invalide | ||
3F000 | INVALID SCHEMA NAME | invalid_schema_name |
Classe 40 -- Annulation de transaction | ||
40000 | TRANSACTION ROLLBACK | transaction_rollback |
40002 | TRANSACTION INTEGRITY CONSTRAINT VIOLATION | transaction_integrity_constraint_violation |
40001 | SERIALIZATION FAILURE | serialization_failure |
40003 | STATEMENT COMPLETION UNKNOWN | statement_completion_unknown |
40P01 | DEADLOCK DETECTED | deadlock_detected |
Classe 42 -- Erreur de syntaxe ou violation de rêgle d'accès | ||
42000 | SYNTAX ERROR OR ACCESS RULE VIOLATION | syntax_error_or_access_rule_violation |
42601 | SYNTAX ERROR | syntax_error |
42501 | INSUFFICIENT PRIVILEGE | insufficient_privilege |
42846 | CANNOT COERCE | cannot_coerce |
42803 | GROUPING ERROR | grouping_error |
42P20 | WINDOWING ERROR | windowing_error |
42P19 | INVALID RECURSION | invalid_recursion |
42830 | INVALID FOREIGN KEY | invalid_foreign_key |
42602 | INVALID NAME | invalid_name |
42622 | NAME TOO LONG | name_too_long |
42939 | RESERVED NAME | reserved_name |
42804 | DATATYPE MISMATCH | datatype_mismatch |
42P18 | INDETERMINATE DATATYPE | indeterminate_datatype |
42809 | WRONG OBJECT TYPE | wrong_object_type |
42703 | UNDEFINED COLUMN | undefined_column |
42883 | UNDEFINED FUNCTION | undefined_function |
42P01 | UNDEFINED TABLE | undefined_table |
42P02 | UNDEFINED PARAMETER | undefined_parameter |
42704 | UNDEFINED OBJECT | undefined_object |
42701 | DUPLICATE COLUMN | duplicate_column |
42P03 | DUPLICATE CURSOR | duplicate_cursor |
42P04 | DUPLICATE DATABASE | duplicate_database |
42723 | DUPLICATE FUNCTION | duplicate_function |
42P05 | DUPLICATE PREPARED STATEMENT | duplicate_prepared_statement |
42P06 | DUPLICATE SCHEMA | duplicate_schema |
42P07 | DUPLICATE TABLE | duplicate_table |
42712 | DUPLICATE ALIAS | duplicate_alias |
42710 | DUPLICATE OBJECT | duplicate_object |
42702 | AMBIGUOUS COLUMN | ambiguous_column |
42725 | AMBIGUOUS FUNCTION | ambiguous_function |
42P08 | AMBIGUOUS PARAMETER | ambiguous_parameter |
42P09 | AMBIGUOUS ALIAS | ambiguous_alias |
42P10 | INVALID COLUMN REFERENCE | invalid_column_reference |
42611 | INVALID COLUMN DEFINITION | invalid_column_definition |
42P11 | INVALID CURSOR DEFINITION | invalid_cursor_definition |
42P12 | INVALID DATABASE DEFINITION | invalid_database_definition |
42P13 | INVALID FUNCTION DEFINITION | invalid_function_definition |
42P14 | INVALID PREPARED STATEMENT DEFINITION | invalid_prepared_statement_definition |
42P15 | INVALID SCHEMA DEFINITION | invalid_schema_definition |
42P16 | INVALID TABLE DEFINITION | invalid_table_definition |
42P17 | INVALID OBJECT DEFINITION | invalid_object_definition |
Classe 44 -- Violation de WITH CHECK OPTION | ||
44000 | WITH CHECK OPTION VIOLATION | with_check_option_violation |
Classe 53 -- Ressources insuffisantes | ||
53000 | INSUFFICIENT RESOURCES | insufficient_resources |
53100 | DISK FULL | disk_full |
53200 | OUT OF MEMORY | out_of_memory |
53300 | TOO MANY CONNECTIONS | too_many_connections |
Classe 54 -- Limite du programme dépassée | ||
54000 | PROGRAM LIMIT EXCEEDED | program_limit_exceeded |
54001 | STATEMENT TOO COMPLEX | statement_too_complex |
54011 | TOO MANY COLUMNS | too_many_columns |
54023 | TOO MANY ARGUMENTS | too_many_arguments |
Classe 55 -- L'objet n'est pas l'état prérequis | ||
55000 | OBJECT NOT IN PREREQUISITE STATE | object_not_in_prerequisite_state |
55006 | OBJECT IN USE | object_in_use |
55P02 | CANT CHANGE RUNTIME PARAM | cant_change_runtime_param |
55P03 | LOCK NOT AVAILABLE | lock_not_available |
Classe 57 -- Intervention d'un opérateur | ||
57000 | OPERATOR INTERVENTION | operator_intervention |
57014 | QUERY CANCELED | query_canceled |
57P01 | ADMIN SHUTDOWN | admin_shutdown |
57P02 | CRASH SHUTDOWN | crash_shutdown |
57P03 | CANNOT CONNECT NOW | cannot_connect_now |
57P04 | DATABASE DROPPED | database_dropped |
Class 58 -- Erreur système (erreurs externes à PostgreSQL™) | ||
58030 | IO ERROR | io_error |
58P01 | UNDEFINED FILE | undefined_file |
58P02 | DUPLICATE FILE | duplicate_file |
Classe F0 -- Erreur dans le fichier de configuration | ||
F0000 | CONFIG FILE ERROR | config_file_error |
F0001 | LOCK FILE EXISTS | lock_file_exists |
Classe P0 -- Erreur PL/pgSQL | ||
P0000 | PLPGSQL ERROR | plpgsql_error |
P0001 | RAISE EXCEPTION | raise_exception |
P0002 | NO DATA FOUND | no_data_found |
P0003 | TOO MANY ROWS | too_many_rows |
Classe XX -- Erreur interne | ||
XX000 | INTERNAL ERROR | internal_error |
XX001 | DATA CORRUPTED | data_corrupted |
XX002 | INDEX CORRUPTED | index_corrupted |