PostgresQL error constants for use with Node.js. Use these to avoid code like if (err.code === '23505') and instead write if (err.code === UNIQUE_VIOLATION).
npm install --save pg-error-constantsconst { UNIQUE_VIOLATION } = require('pg-error-constants') // ... .catch((err) => { if (err.code === UNIQUE_VIOLATION && err.constraint === 'user_name_key') { throw new UserError('That name is already taken') } throw err })| Error Code | Constant name |
|---|---|
| Class 00 — Successful Completion | |
| 00000 | SUCCESSFUL_COMPLETION |
| Class 01 — Warning | |
| 01000 | WARNING |
| 0100C | DYNAMIC_RESULT_SETS_RETURNED |
| 01008 | IMPLICIT_ZERO_BIT_PADDING |
| 01003 | NULL_VALUE_ELIMINATED_IN_SET_FUNCTION |
| 01007 | PRIVILEGE_NOT_GRANTED |
| 01006 | PRIVILEGE_NOT_REVOKED |
| 01004 | STRING_DATA_RIGHT_TRUNCATION |
| 01P01 | DEPRECATED_FEATURE |
| Class 02 — No Data (this is also a warning class per the SQL standard) | |
| 02000 | NO_DATA |
| 02001 | NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED |
| Class 03 — SQL Statement Not Yet Complete | |
| 03000 | SQL_STATEMENT_NOT_YET_COMPLETE |
| Class 08 — Connection Exception | |
| 08000 | CONNECTION_EXCEPTION |
| 08003 | CONNECTION_DOES_NOT_EXIST |
| 08006 | CONNECTION_FAILURE |
| 08001 | SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION |
| 08004 | SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION |
| 08007 | TRANSACTION_RESOLUTION_UNKNOWN |
| 08P01 | PROTOCOL_VIOLATION |
| Class 09 — Triggered Action Exception | |
| 09000 | TRIGGERED_ACTION_EXCEPTION |
| Class 0A — Feature Not Supported | |
| 0A000 | FEATURE_NOT_SUPPORTED |
| Class 0B — Invalid Transaction Initiation | |
| 0B000 | INVALID_TRANSACTION_INITIATION |
| Class 0F — Locator Exception | |
| 0F000 | LOCATOR_EXCEPTION |
| 0F001 | INVALID_LOCATOR_SPECIFICATION |
| Class 0L — Invalid Grantor | |
| 0L000 | INVALID_GRANTOR |
| 0LP01 | INVALID_GRANT_OPERATION |
| Class 0P — Invalid Role Specification | |
| 0P000 | INVALID_ROLE_SPECIFICATION |
| Class 0Z — Diagnostics Exception | |
| 0Z000 | DIAGNOSTICS_EXCEPTION |
| 0Z002 | STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER |
| Class 20 — Case Not Found | |
| 20000 | CASE_NOT_FOUND |
| Class 21 — Cardinality Violation | |
| 21000 | CARDINALITY_VIOLATION |
| Class 22 — Data Exception | |
| 22000 | DATA_EXCEPTION |
| 2202E | ARRAY_SUBSCRIPT_ERROR |
| 22021 | CHARACTER_NOT_IN_REPERTOIRE |
| 22008 | DATETIME_FIELD_OVERFLOW |
| 22012 | DIVISION_BY_ZERO |
| 22005 | ERROR_IN_ASSIGNMENT |
| 2200B | ESCAPE_CHARACTER_CONFLICT |
| 22022 | INDICATOR_OVERFLOW |
| 22015 | INTERVAL_FIELD_OVERFLOW |
| 2201E | INVALID_ARGUMENT_FOR_LOGARITHM |
| 22014 | INVALID_ARGUMENT_FOR_NTILE_FUNCTION |
| 22016 | INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION |
| 2201F | INVALID_ARGUMENT_FOR_POWER_FUNCTION |
| 2201G | INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION |
| 22018 | INVALID_CHARACTER_VALUE_FOR_CAST |
| 22007 | INVALID_DATETIME_FORMAT |
| 22019 | INVALID_ESCAPE_CHARACTER |
| 2200D | INVALID_ESCAPE_OCTET |
| 22025 | INVALID_ESCAPE_SEQUENCE |
| 22P06 | NONSTANDARD_USE_OF_ESCAPE_CHARACTER |
| 22010 | INVALID_INDICATOR_PARAMETER_VALUE |
| 22023 | INVALID_PARAMETER_VALUE |
| 2201B | INVALID_REGULAR_EXPRESSION |
| 2201W | INVALID_ROW_COUNT_IN_LIMIT_CLAUSE |
| 2201X | INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE |
| 22009 | INVALID_TIME_ZONE_DISPLACEMENT_VALUE |
| 2200C | INVALID_USE_OF_ESCAPE_CHARACTER |
| 2200G | MOST_SPECIFIC_TYPE_MISMATCH |
| 22004 | NULL_VALUE_NOT_ALLOWED |
| 22002 | NULL_VALUE_NO_INDICATOR_PARAMETER |
| 22003 | NUMERIC_VALUE_OUT_OF_RANGE |
| 22026 | STRING_DATA_LENGTH_MISMATCH |
| 22001 | STRING_DATA_RIGHT_TRUNCATION |
| 22011 | SUBSTRING_ERROR |
| 22027 | TRIM_ERROR |
| 22024 | UNTERMINATED_C_STRING |
| 2200F | ZERO_LENGTH_CHARACTER_STRING |
| 22P01 | FLOATING_POINT_EXCEPTION |
| 22P02 | INVALID_TEXT_REPRESENTATION |
| 22P03 | INVALID_BINARY_REPRESENTATION |
| 22P04 | BAD_COPY_FILE_FORMAT |
| 22P05 | UNTRANSLATABLE_CHARACTER |
| 2200L | NOT_AN_XML_DOCUMENT |
| 2200M | INVALID_XML_DOCUMENT |
| 2200N | INVALID_XML_CONTENT |
| 2200S | INVALID_XML_COMMENT |
| 2200T | INVALID_XML_PROCESSING_INSTRUCTION |
| Class 23 — Integrity Constraint Violation | |
| 23000 | INTEGRITY_CONSTRAINT_VIOLATION |
| 23001 | RESTRICT_VIOLATION |
| 23502 | NOT_NULL_VIOLATION |
| 23503 | FOREIGN_KEY_VIOLATION |
| 23505 | UNIQUE_VIOLATION |
| 23514 | CHECK_VIOLATION |
| 23P01 | EXCLUSION_VIOLATION |
| Class 24 — Invalid Cursor State | |
| 24000 | INVALID_CURSOR_STATE |
| Class 25 — Invalid Transaction State | |
| 25000 | INVALID_TRANSACTION_STATE |
| 25001 | ACTIVE_SQL_TRANSACTION |
| 25002 | BRANCH_TRANSACTION_ALREADY_ACTIVE |
| 25008 | HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL |
| 25003 | INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION |
| 25004 | INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION |
| 25005 | NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION |
| 25006 | READ_ONLY_SQL_TRANSACTION |
| 25007 | SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED |
| 25P01 | NO_ACTIVE_SQL_TRANSACTION |
| 25P02 | IN_FAILED_SQL_TRANSACTION |
| Class 26 — Invalid SQL Statement Name | |
| 26000 | INVALID_SQL_STATEMENT_NAME |
| Class 27 — Triggered Data Change Violation | |
| 27000 | TRIGGERED_DATA_CHANGE_VIOLATION |
| Class 28 — Invalid Authorization Specification | |
| 28000 | INVALID_AUTHORIZATION_SPECIFICATION |
| 28P01 | INVALID_PASSWORD |
| Class 2B — Dependent Privilege Descriptors Still Exist | |
| 2B000 | DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST |
| 2BP01 | DEPENDENT_OBJECTS_STILL_EXIST |
| Class 2D — Invalid Transaction Termination | |
| 2D000 | INVALID_TRANSACTION_TERMINATION |
| Class 2F — SQL Routine Exception | |
| 2F000 | SQL_ROUTINE_EXCEPTION |
| 2F005 | FUNCTION_EXECUTED_NO_RETURN_STATEMENT |
| 2F002 | MODIFYING_SQL_DATA_NOT_PERMITTED |
| 2F003 | PROHIBITED_SQL_STATEMENT_ATTEMPTED |
| 2F004 | READING_SQL_DATA_NOT_PERMITTED |
| Class 34 — Invalid Cursor Name | |
| 34000 | INVALID_CURSOR_NAME |
| Class 38 — External Routine Exception | |
| 38000 | EXTERNAL_ROUTINE_EXCEPTION |
| 38001 | CONTAINING_SQL_NOT_PERMITTED |
| 38002 | MODIFYING_SQL_DATA_NOT_PERMITTED |
| 38003 | PROHIBITED_SQL_STATEMENT_ATTEMPTED |
| 38004 | READING_SQL_DATA_NOT_PERMITTED |
| Class 39 — External Routine Invocation Exception | |
| 39000 | EXTERNAL_ROUTINE_INVOCATION_EXCEPTION |
| 39001 | INVALID_SQLSTATE_RETURNED |
| 39004 | NULL_VALUE_NOT_ALLOWED |
| 39P01 | TRIGGER_PROTOCOL_VIOLATED |
| 39P02 | SRF_PROTOCOL_VIOLATED |
| Class 3B — Savepoint Exception | |
| 3B000 | SAVEPOINT_EXCEPTION |
| 3B001 | INVALID_SAVEPOINT_SPECIFICATION |
| Class 3D — Invalid Catalog Name | |
| 3D000 | INVALID_CATALOG_NAME |
| Class 3F — Invalid Schema Name | |
| 3F000 | INVALID_SCHEMA_NAME |
| Class 40 — Transaction Rollback | |
| 40000 | TRANSACTION_ROLLBACK |
| 40002 | TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION |
| 40001 | SERIALIZATION_FAILURE |
| 40003 | STATEMENT_COMPLETION_UNKNOWN |
| 40P01 | DEADLOCK_DETECTED |
| Class 42 — Syntax Error or Access Rule Violation | |
| 42000 | SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION |
| 42601 | SYNTAX_ERROR |
| 42501 | INSUFFICIENT_PRIVILEGE |
| 42846 | CANNOT_COERCE |
| 42803 | GROUPING_ERROR |
| 42P20 | WINDOWING_ERROR |
| 42P19 | INVALID_RECURSION |
| 42830 | INVALID_FOREIGN_KEY |
| 42602 | INVALID_NAME |
| 42622 | NAME_TOO_LONG |
| 42939 | RESERVED_NAME |
| 42804 | DATATYPE_MISMATCH |
| 42P18 | INDETERMINATE_DATATYPE |
| 42P21 | COLLATION_MISMATCH |
| 42P22 | INDETERMINATE_COLLATION |
| 42809 | WRONG_OBJECT_TYPE |
| 42703 | UNDEFINED_COLUMN |
| 42883 | UNDEFINED_FUNCTION |
| 42P01 | UNDEFINED_TABLE |
| 42P02 | UNDEFINED_PARAMETER |
| 42704 | UNDEFINED_OBJECT |
| 42701 | DUPLICATE_COLUMN |
| 42P03 | DUPLICATE_CURSOR |
| 42P04 | DUPLICATE_DATABASE |
| 42723 | DUPLICATE_FUNCTION |
| 42P05 | DUPLICATE_PREPARED_STATEMENT |
| 42P06 | DUPLICATE_SCHEMA |
| 42P07 | DUPLICATE_TABLE |
| 42712 | DUPLICATE_ALIAS |
| 42710 | DUPLICATE_OBJECT |
| 42702 | AMBIGUOUS_COLUMN |
| 42725 | AMBIGUOUS_FUNCTION |
| 42P08 | AMBIGUOUS_PARAMETER |
| 42P09 | AMBIGUOUS_ALIAS |
| 42P10 | INVALID_COLUMN_REFERENCE |
| 42611 | INVALID_COLUMN_DEFINITION |
| 42P11 | INVALID_CURSOR_DEFINITION |
| 42P12 | INVALID_DATABASE_DEFINITION |
| 42P13 | INVALID_FUNCTION_DEFINITION |
| 42P14 | INVALID_PREPARED_STATEMENT_DEFINITION |
| 42P15 | INVALID_SCHEMA_DEFINITION |
| 42P16 | INVALID_TABLE_DEFINITION |
| 42P17 | INVALID_OBJECT_DEFINITION |
| Class 44 — WITH CHECK OPTION Violation | |
| 44000 | WITH_CHECK_OPTION_VIOLATION |
| Class 53 — Insufficient Resources | |
| 53000 | INSUFFICIENT_RESOURCES |
| 53100 | DISK_FULL |
| 53200 | OUT_OF_MEMORY |
| 53300 | TOO_MANY_CONNECTIONS |
| 53400 | CONFIGURATION_LIMIT_EXCEEDED |
| Class 54 — Program Limit Exceeded | |
| 54000 | PROGRAM_LIMIT_EXCEEDED |
| 54001 | STATEMENT_TOO_COMPLEX |
| 54011 | TOO_MANY_COLUMNS |
| 54023 | TOO_MANY_ARGUMENTS |
| Class 55 — Object Not In Prerequisite State | |
| 55000 | OBJECT_NOT_IN_PREREQUISITE_STATE |
| 55006 | OBJECT_IN_USE |
| 55P02 | CANT_CHANGE_RUNTIME_PARAM |
| 55P03 | LOCK_NOT_AVAILABLE |
| Class 57 — Operator Intervention | |
| 57000 | OPERATOR_INTERVENTION |
| 57014 | QUERY_CANCELED |
| 57P01 | ADMIN_SHUTDOWN |
| 57P02 | CRASH_SHUTDOWN |
| 57P03 | CANNOT_CONNECT_NOW |
| 57P04 | DATABASE_DROPPED |
| Class 58 — System Error (errors external to PostgreSQL itself) | |
| 58000 | SYSTEM_ERROR |
| 58030 | IO_ERROR |
| 58P01 | UNDEFINED_FILE |
| 58P02 | DUPLICATE_FILE |
| Class F0 — Configuration File Error | |
| F0000 | CONFIG_FILE_ERROR |
| F0001 | LOCK_FILE_EXISTS |
| Class HV — Foreign Data Wrapper Error (SQL/MED) | |
| HV000 | FDW_ERROR |
| HV005 | FDW_COLUMN_NAME_NOT_FOUND |
| HV002 | FDW_DYNAMIC_PARAMETER_VALUE_NEEDED |
| HV010 | FDW_FUNCTION_SEQUENCE_ERROR |
| HV021 | FDW_INCONSISTENT_DESCRIPTOR_INFORMATION |
| HV024 | FDW_INVALID_ATTRIBUTE_VALUE |
| HV007 | FDW_INVALID_COLUMN_NAME |
| HV008 | FDW_INVALID_COLUMN_NUMBER |
| HV004 | FDW_INVALID_DATA_TYPE |
| HV006 | FDW_INVALID_DATA_TYPE_DESCRIPTORS |
| HV091 | FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER |
| HV00B | FDW_INVALID_HANDLE |
| HV00C | FDW_INVALID_OPTION_INDEX |
| HV00D | FDW_INVALID_OPTION_NAME |
| HV090 | FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH |
| HV00A | FDW_INVALID_STRING_FORMAT |
| HV009 | FDW_INVALID_USE_OF_NULL_POINTER |
| HV014 | FDW_TOO_MANY_HANDLES |
| HV001 | FDW_OUT_OF_MEMORY |
| HV00P | FDW_NO_SCHEMAS |
| HV00J | FDW_OPTION_NAME_NOT_FOUND |
| HV00K | FDW_REPLY_HANDLE |
| HV00Q | FDW_SCHEMA_NOT_FOUND |
| HV00R | FDW_TABLE_NOT_FOUND |
| HV00L | FDW_UNABLE_TO_CREATE_EXECUTION |
| HV00M | FDW_UNABLE_TO_CREATE_REPLY |
| HV00N | FDW_UNABLE_TO_ESTABLISH_CONNECTION |
| Class P0 — PL/pgSQL Error | |
| P0000 | PLPGSQL_ERROR |
| P0001 | RAISE_EXCEPTION |
| P0002 | NO_DATA_FOUND |
| P0003 | TOO_MANY_ROWS |
| Class XX — Internal Error | |
| XX000 | INTERNAL_ERROR |
| XX001 | DATA_CORRUPTED |
| XX002 | INDEX_CORRUPTED |