Skip to content

Commit 409c7ff

Browse files
committed
Add files
1 parent 47807f6 commit 409c7ff

File tree

5 files changed

+394
-0
lines changed

5 files changed

+394
-0
lines changed

.gitattributes

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
/.gitattributes export-ignore
2+
/.gitignore export-ignore
3+
/.gitmodules export-ignore
4+
/.travis.yml export-ignore
5+
/phpunit.xml export-ignore
6+
/tests export-ignore

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/vendor
2+
composer.lock

README.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# PostgreSQL Error Codes for PHP
2+
3+
## Installation
4+
5+
```bash
6+
composer require sunaoka/php-postgresql-errors
7+
```
8+
9+
## Usage
10+
11+
```php
12+
<?php
13+
14+
use Sunaoka\PostgresError\PostgresError;
15+
16+
echo PostgresError::UNIQUE_VIOLATION;
17+
// => 23505
18+
```

composer.json

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"name": "sunaoka/php-postgresql-errors",
3+
"description": "PostgreSQL Error Codes",
4+
"keywords": ["PostgreSQL", "PHP"],
5+
"type": "library",
6+
"license": "MIT",
7+
"authors": [
8+
{
9+
"name": "sunaoka",
10+
"email": "[email protected]"
11+
}
12+
],
13+
"autoload": {
14+
"psr-4": {
15+
"Sunaoka\\PostgresError\\": "src/"
16+
}
17+
}
18+
}

src/PostgresError.php

Lines changed: 350 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,350 @@
1+
<?php
2+
3+
namespace Sunaoka\PostgresError;
4+
5+
class PostgresError
6+
{
7+
// Class 00 — Successful Completion
8+
const SUCCESSFUL_COMPLETION = '00000';
9+
10+
// Class 01 — Warning
11+
const WARNING = '01000';
12+
const DYNAMIC_RESULT_SETS_RETURNED = '0100C';
13+
const IMPLICIT_ZERO_BIT_PADDING = '01008';
14+
const NULL_VALUE_ELIMINATED_IN_SET_FUNCTION = '01003';
15+
const PRIVILEGE_NOT_GRANTED = '01007';
16+
const PRIVILEGE_NOT_REVOKED = '01006';
17+
const STRING_DATA_RIGHT_TRUNCATION = '01004';
18+
const DEPRECATED_FEATURE = '01P01';
19+
20+
// Class 02 — No Data (this is also a warning class per the SQL standard)
21+
const NO_DATA = '02000';
22+
const NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED = '02001';
23+
24+
// Class 03 — SQL Statement Not Yet Complete
25+
const SQL_STATEMENT_NOT_YET_COMPLETE = '03000';
26+
27+
// Class 08 — Connection Exception
28+
const CONNECTION_EXCEPTION = '08000';
29+
const CONNECTION_DOES_NOT_EXIST = '08003';
30+
const CONNECTION_FAILURE = '08006';
31+
const SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION = '08001';
32+
const SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION = '08004';
33+
const TRANSACTION_RESOLUTION_UNKNOWN = '08007';
34+
const PROTOCOL_VIOLATION = '08P01';
35+
36+
// Class 09 — Triggered Action Exception
37+
const TRIGGERED_ACTION_EXCEPTION = '09000';
38+
39+
// Class 0A — Feature Not Supported
40+
const FEATURE_NOT_SUPPORTED = '0A000';
41+
42+
// Class 0B — Invalid Transaction Initiation
43+
const INVALID_TRANSACTION_INITIATION = '0B000';
44+
45+
// Class 0F — Locator Exception
46+
const LOCATOR_EXCEPTION = '0F000';
47+
const INVALID_LOCATOR_SPECIFICATION = '0F001';
48+
49+
// Class 0L — Invalid Grantor
50+
const INVALID_GRANTOR = '0L000';
51+
const INVALID_GRANT_OPERATION = '0LP01';
52+
53+
// Class 0P — Invalid Role Specification
54+
const INVALID_ROLE_SPECIFICATION = '0P000';
55+
56+
// Class 0Z — Diagnostics Exception
57+
const DIAGNOSTICS_EXCEPTION = '0Z000';
58+
const STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER = '0Z002';
59+
60+
// Class 20 — Case Not Found
61+
const CASE_NOT_FOUND = '20000';
62+
63+
// Class 21 — Cardinality Violation
64+
const CARDINALITY_VIOLATION = '21000';
65+
66+
// Class 22 — Data Exception
67+
const DATA_EXCEPTION = '22000';
68+
const ARRAY_SUBSCRIPT_ERROR = '2202E';
69+
const CHARACTER_NOT_IN_REPERTOIRE = '22021';
70+
const DATETIME_FIELD_OVERFLOW = '22008';
71+
const DIVISION_BY_ZERO = '22012';
72+
const ERROR_IN_ASSIGNMENT = '22005';
73+
const ESCAPE_CHARACTER_CONFLICT = '2200B';
74+
const INDICATOR_OVERFLOW = '22022';
75+
const INTERVAL_FIELD_OVERFLOW = '22015';
76+
const INVALID_ARGUMENT_FOR_LOGARITHM = '2201E';
77+
const INVALID_ARGUMENT_FOR_NTILE_FUNCTION = '22014';
78+
const INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION = '22016';
79+
const INVALID_ARGUMENT_FOR_POWER_FUNCTION = '2201F';
80+
const INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION = '2201G';
81+
const INVALID_CHARACTER_VALUE_FOR_CAST = '22018';
82+
const INVALID_DATETIME_FORMAT = '22007';
83+
const INVALID_ESCAPE_CHARACTER = '22019';
84+
const INVALID_ESCAPE_OCTET = '2200D';
85+
const INVALID_ESCAPE_SEQUENCE = '22025';
86+
const NONSTANDARD_USE_OF_ESCAPE_CHARACTER = '22P06';
87+
const INVALID_INDICATOR_PARAMETER_VALUE = '22010';
88+
const INVALID_PARAMETER_VALUE = '22023';
89+
const INVALID_PRECEDING_OR_FOLLOWING_SIZE = '22013';
90+
const INVALID_REGULAR_EXPRESSION = '2201B';
91+
const INVALID_ROW_COUNT_IN_LIMIT_CLAUSE = '2201W';
92+
const INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE = '2201X';
93+
const INVALID_TABLESAMPLE_ARGUMENT = '2202H';
94+
const INVALID_TABLESAMPLE_REPEAT = '2202G';
95+
const INVALID_TIME_ZONE_DISPLACEMENT_VALUE = '22009';
96+
const INVALID_USE_OF_ESCAPE_CHARACTER = '2200C';
97+
const MOST_SPECIFIC_TYPE_MISMATCH = '2200G';
98+
const NULL_VALUE_NOT_ALLOWED = '22004';
99+
const NULL_VALUE_NO_INDICATOR_PARAMETER = '22002';
100+
const NUMERIC_VALUE_OUT_OF_RANGE = '22003';
101+
const SEQUENCE_GENERATOR_LIMIT_EXCEEDED = '2200H';
102+
const STRING_DATA_LENGTH_MISMATCH = '22026';
103+
const STRING_DATA_RIGHT_TRUNCATION_EXCEPTION = '22001';
104+
const SUBSTRING_ERROR = '22011';
105+
const TRIM_ERROR = '22027';
106+
const UNTERMINATED_C_STRING = '22024';
107+
const ZERO_LENGTH_CHARACTER_STRING = '2200F';
108+
const FLOATING_POINT_EXCEPTION = '22P01';
109+
const INVALID_TEXT_REPRESENTATION = '22P02';
110+
const INVALID_BINARY_REPRESENTATION = '22P03';
111+
const BAD_COPY_FILE_FORMAT = '22P04';
112+
const UNTRANSLATABLE_CHARACTER = '22P05';
113+
const NOT_AN_XML_DOCUMENT = '2200L';
114+
const INVALID_XML_DOCUMENT = '2200M';
115+
const INVALID_XML_CONTENT = '2200N';
116+
const INVALID_XML_COMMENT = '2200S';
117+
const INVALID_XML_PROCESSING_INSTRUCTION = '2200T';
118+
const DUPLICATE_JSON_OBJECT_KEY_VALUE = '22030';
119+
const INVALID_ARGUMENT_FOR_SQL_JSON_DATETIME_FUNCTION = '22031';
120+
const INVALID_JSON_TEXT = '22032';
121+
const INVALID_SQL_JSON_SUBSCRIPT = '22033';
122+
const MORE_THAN_ONE_SQL_JSON_ITEM = '22034';
123+
const NO_SQL_JSON_ITEM = '22035';
124+
const NON_NUMERIC_SQL_JSON_ITEM = '22036';
125+
const NON_UNIQUE_KEYS_IN_A_JSON_OBJECT = '22037';
126+
const SINGLETON_SQL_JSON_ITEM_REQUIRED = '22038';
127+
const SQL_JSON_ARRAY_NOT_FOUND = '22039';
128+
const SQL_JSON_MEMBER_NOT_FOUND = '2203A';
129+
const SQL_JSON_NUMBER_NOT_FOUND = '2203B';
130+
const SQL_JSON_OBJECT_NOT_FOUND = '2203C';
131+
const TOO_MANY_JSON_ARRAY_ELEMENTS = '2203D';
132+
const TOO_MANY_JSON_OBJECT_MEMBERS = '2203E';
133+
const SQL_JSON_SCALAR_REQUIRED = '2203F';
134+
135+
// Class 23 — Integrity Constraint Violation
136+
const INTEGRITY_CONSTRAINT_VIOLATION = '23000';
137+
const RESTRICT_VIOLATION = '23001';
138+
const NOT_NULL_VIOLATION = '23502';
139+
const FOREIGN_KEY_VIOLATION = '23503';
140+
const UNIQUE_VIOLATION = '23505';
141+
const CHECK_VIOLATION = '23514';
142+
const EXCLUSION_VIOLATION = '23P01';
143+
144+
// Class 24 — Invalid Cursor State
145+
const INVALID_CURSOR_STATE = '24000';
146+
147+
// Class 25 — Invalid Transaction State
148+
const INVALID_TRANSACTION_STATE = '25000';
149+
const ACTIVE_SQL_TRANSACTION = '25001';
150+
const BRANCH_TRANSACTION_ALREADY_ACTIVE = '25002';
151+
const HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL = '25008';
152+
const INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION = '25003';
153+
const INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION = '25004';
154+
const NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION = '25005';
155+
const READ_ONLY_SQL_TRANSACTION = '25006';
156+
const SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED = '25007';
157+
const NO_ACTIVE_SQL_TRANSACTION = '25P01';
158+
const IN_FAILED_SQL_TRANSACTION = '25P02';
159+
const IDLE_IN_TRANSACTION_SESSION_TIMEOUT = '25P03';
160+
161+
// Class 26 — Invalid SQL Statement Name
162+
const INVALID_SQL_STATEMENT_NAME = '26000';
163+
164+
// Class 27 — Triggered Data Change Violation
165+
const TRIGGERED_DATA_CHANGE_VIOLATION = '27000';
166+
167+
// Class 28 — Invalid Authorization Specification
168+
const INVALID_AUTHORIZATION_SPECIFICATION = '28000';
169+
const INVALID_PASSWORD = '28P01';
170+
171+
// Class 2B — Dependent Privilege Descriptors Still Exist
172+
const DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST = '2B000';
173+
const DEPENDENT_OBJECTS_STILL_EXIST = '2BP01';
174+
175+
// Class 2D — Invalid Transaction Termination
176+
const INVALID_TRANSACTION_TERMINATION = '2D000';
177+
178+
// Class 2F — SQL Routine Exception
179+
const SQL_ROUTINE_EXCEPTION = '2F000';
180+
const FUNCTION_EXECUTED_NO_RETURN_STATEMENT = '2F005';
181+
const MODIFYING_SQL_DATA_NOT_PERMITTED = '2F002';
182+
const PROHIBITED_SQL_STATEMENT_ATTEMPTED = '2F003';
183+
const READING_SQL_DATA_NOT_PERMITTED = '2F004';
184+
185+
// Class 34 — Invalid Cursor Name
186+
const INVALID_CURSOR_NAME = '34000';
187+
188+
// Class 38 — External Routine Exception
189+
const EXTERNAL_ROUTINE_EXCEPTION = '38000';
190+
const CONTAINING_SQL_NOT_PERMITTED = '38001';
191+
const MODIFYING_SQL_DATA_NOT_PERMITTED_EXCEPTION = '38002';
192+
const PROHIBITED_SQL_STATEMENT_ATTEMPTED_EXCEPTION = '38003';
193+
const READING_SQL_DATA_NOT_PERMITTED_EXCEPTION = '38004';
194+
195+
// Class 39 — External Routine Invocation Exception
196+
const EXTERNAL_ROUTINE_INVOCATION_EXCEPTION = '39000';
197+
const INVALID_SQLSTATE_RETURNED = '39001';
198+
const NULL_VALUE_NOT_ALLOWED_EXCEPTION = '39004';
199+
const TRIGGER_PROTOCOL_VIOLATED = '39P01';
200+
const SRF_PROTOCOL_VIOLATED = '39P02';
201+
const EVENT_TRIGGER_PROTOCOL_VIOLATED = '39P03';
202+
203+
// Class 3B — Savepoint Exception
204+
const SAVEPOINT_EXCEPTION = '3B000';
205+
const INVALID_SAVEPOINT_SPECIFICATION = '3B001';
206+
207+
// Class 3D — Invalid Catalog Name
208+
const INVALID_CATALOG_NAME = '3D000';
209+
210+
// Class 3F — Invalid Schema Name
211+
const INVALID_SCHEMA_NAME = '3F000';
212+
213+
// Class 40 — Transaction Rollback
214+
const TRANSACTION_ROLLBACK = '40000';
215+
const TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION = '40002';
216+
const SERIALIZATION_FAILURE = '40001';
217+
const STATEMENT_COMPLETION_UNKNOWN = '40003';
218+
const DEADLOCK_DETECTED = '40P01';
219+
220+
// Class 42 — Syntax Error or Access Rule Violation
221+
const SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION = '42000';
222+
const SYNTAX_ERROR = '42601';
223+
const INSUFFICIENT_PRIVILEGE = '42501';
224+
const CANNOT_COERCE = '42846';
225+
const GROUPING_ERROR = '42803';
226+
const WINDOWING_ERROR = '42P20';
227+
const INVALID_RECURSION = '42P19';
228+
const INVALID_FOREIGN_KEY = '42830';
229+
const INVALID_NAME = '42602';
230+
const NAME_TOO_LONG = '42622';
231+
const RESERVED_NAME = '42939';
232+
const DATATYPE_MISMATCH = '42804';
233+
const INDETERMINATE_DATATYPE = '42P18';
234+
const COLLATION_MISMATCH = '42P21';
235+
const INDETERMINATE_COLLATION = '42P22';
236+
const WRONG_OBJECT_TYPE = '42809';
237+
const GENERATED_ALWAYS = '428C9';
238+
const UNDEFINED_COLUMN = '42703';
239+
const UNDEFINED_FUNCTION = '42883';
240+
const UNDEFINED_TABLE = '42P01';
241+
const UNDEFINED_PARAMETER = '42P02';
242+
const UNDEFINED_OBJECT = '42704';
243+
const DUPLICATE_COLUMN = '42701';
244+
const DUPLICATE_CURSOR = '42P03';
245+
const DUPLICATE_DATABASE = '42P04';
246+
const DUPLICATE_FUNCTION = '42723';
247+
const DUPLICATE_PREPARED_STATEMENT = '42P05';
248+
const DUPLICATE_SCHEMA = '42P06';
249+
const DUPLICATE_TABLE = '42P07';
250+
const DUPLICATE_ALIAS = '42712';
251+
const DUPLICATE_OBJECT = '42710';
252+
const AMBIGUOUS_COLUMN = '42702';
253+
const AMBIGUOUS_FUNCTION = '42725';
254+
const AMBIGUOUS_PARAMETER = '42P08';
255+
const AMBIGUOUS_ALIAS = '42P09';
256+
const INVALID_COLUMN_REFERENCE = '42P10';
257+
const INVALID_COLUMN_DEFINITION = '42611';
258+
const INVALID_CURSOR_DEFINITION = '42P11';
259+
const INVALID_DATABASE_DEFINITION = '42P12';
260+
const INVALID_FUNCTION_DEFINITION = '42P13';
261+
const INVALID_PREPARED_STATEMENT_DEFINITION = '42P14';
262+
const INVALID_SCHEMA_DEFINITION = '42P15';
263+
const INVALID_TABLE_DEFINITION = '42P16';
264+
const INVALID_OBJECT_DEFINITION = '42P17';
265+
266+
// Class 44 — WITH CHECK OPTION Violation
267+
const WITH_CHECK_OPTION_VIOLATION = '44000';
268+
269+
// Class 53 — Insufficient Resources
270+
const INSUFFICIENT_RESOURCES = '53000';
271+
const DISK_FULL = '53100';
272+
const OUT_OF_MEMORY = '53200';
273+
const TOO_MANY_CONNECTIONS = '53300';
274+
const CONFIGURATION_LIMIT_EXCEEDED = '53400';
275+
276+
// Class 54 — Program Limit Exceeded
277+
const PROGRAM_LIMIT_EXCEEDED = '54000';
278+
const STATEMENT_TOO_COMPLEX = '54001';
279+
const TOO_MANY_COLUMNS = '54011';
280+
const TOO_MANY_ARGUMENTS = '54023';
281+
282+
// Class 55 — Object Not In Prerequisite State
283+
const OBJECT_NOT_IN_PREREQUISITE_STATE = '55000';
284+
const OBJECT_IN_USE = '55006';
285+
const CANT_CHANGE_RUNTIME_PARAM = '55P02';
286+
const LOCK_NOT_AVAILABLE = '55P03';
287+
const UNSAFE_NEW_ENUM_VALUE_USAGE = '55P04';
288+
289+
// Class 57 — Operator Intervention
290+
const OPERATOR_INTERVENTION = '57000';
291+
const QUERY_CANCELED = '57014';
292+
const ADMIN_SHUTDOWN = '57P01';
293+
const CRASH_SHUTDOWN = '57P02';
294+
const CANNOT_CONNECT_NOW = '57P03';
295+
const DATABASE_DROPPED = '57P04';
296+
297+
// Class 58 — System Error (errors external to PostgreSQL itself)
298+
const SYSTEM_ERROR = '58000';
299+
const IO_ERROR = '58030';
300+
const UNDEFINED_FILE = '58P01';
301+
const DUPLICATE_FILE = '58P02';
302+
303+
// Class 72 — Snapshot Failure
304+
const SNAPSHOT_TOO_OLD = '72000';
305+
306+
// Class F0 — Configuration File Error
307+
const CONFIG_FILE_ERROR = 'F0000';
308+
const LOCK_FILE_EXISTS = 'F0001';
309+
310+
// Class HV — Foreign Data Wrapper Error (SQL/MED)
311+
const FDW_ERROR = 'HV000';
312+
const FDW_COLUMN_NAME_NOT_FOUND = 'HV005';
313+
const FDW_DYNAMIC_PARAMETER_VALUE_NEEDED = 'HV002';
314+
const FDW_FUNCTION_SEQUENCE_ERROR = 'HV010';
315+
const FDW_INCONSISTENT_DESCRIPTOR_INFORMATION = 'HV021';
316+
const FDW_INVALID_ATTRIBUTE_VALUE = 'HV024';
317+
const FDW_INVALID_COLUMN_NAME = 'HV007';
318+
const FDW_INVALID_COLUMN_NUMBER = 'HV008';
319+
const FDW_INVALID_DATA_TYPE = 'HV004';
320+
const FDW_INVALID_DATA_TYPE_DESCRIPTORS = 'HV006';
321+
const FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER = 'HV091';
322+
const FDW_INVALID_HANDLE = 'HV00B';
323+
const FDW_INVALID_OPTION_INDEX = 'HV00C';
324+
const FDW_INVALID_OPTION_NAME = 'HV00D';
325+
const FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH = 'HV090';
326+
const FDW_INVALID_STRING_FORMAT = 'HV00A';
327+
const FDW_INVALID_USE_OF_NULL_POINTER = 'HV009';
328+
const FDW_TOO_MANY_HANDLES = 'HV014';
329+
const FDW_OUT_OF_MEMORY = 'HV001';
330+
const FDW_NO_SCHEMAS = 'HV00P';
331+
const FDW_OPTION_NAME_NOT_FOUND = 'HV00J';
332+
const FDW_REPLY_HANDLE = 'HV00K';
333+
const FDW_SCHEMA_NOT_FOUND = 'HV00Q';
334+
const FDW_TABLE_NOT_FOUND = 'HV00R';
335+
const FDW_UNABLE_TO_CREATE_EXECUTION = 'HV00L';
336+
const FDW_UNABLE_TO_CREATE_REPLY = 'HV00M';
337+
const FDW_UNABLE_TO_ESTABLISH_CONNECTION = 'HV00N';
338+
339+
// Class P0 — PL/pgSQL Error
340+
const PLPGSQL_ERROR = 'P0000';
341+
const RAISE_EXCEPTION = 'P0001';
342+
const NO_DATA_FOUND = 'P0002';
343+
const TOO_MANY_ROWS = 'P0003';
344+
const ASSERT_FAILURE = 'P0004';
345+
346+
// Class XX — Internal Error
347+
const INTERNAL_ERROR = 'XX000';
348+
const DATA_CORRUPTED = 'XX001';
349+
const INDEX_CORRUPTED = 'XX002';
350+
}

0 commit comments

Comments
 (0)