|
1
|
|
|
<?php |
|
2
|
|
|
declare(strict_types=1); |
|
3
|
|
|
|
|
4
|
|
|
namespace Ivory\Lang\Sql; |
|
5
|
|
|
|
|
6
|
|
|
/** |
|
7
|
|
|
* SQL STATE codes. |
|
8
|
|
|
* |
|
9
|
|
|
* @see SqlStateClass |
|
10
|
|
|
* @see http://www.postgresql.org/docs/10/static/errcodes-appendix.html |
|
11
|
|
|
*/ |
|
12
|
|
|
class SqlState |
|
|
|
|
|
|
13
|
|
|
{ |
|
14
|
|
|
const SUCCESSFUL_COMPLETION = '00000'; |
|
15
|
|
|
const WARNING = '01000'; |
|
16
|
|
|
const NULL_VALUE_ELIMINATED_IN_SET_FUNCTION = '01003'; |
|
17
|
|
|
const STRING_DATA_RIGHT_TRUNCATION_WARNING = '01004'; |
|
18
|
|
|
const PRIVILEGE_NOT_REVOKED = '01006'; |
|
19
|
|
|
const PRIVILEGE_NOT_GRANTED = '01007'; |
|
20
|
|
|
const IMPLICIT_ZERO_BIT_PADDING = '01008'; |
|
21
|
|
|
const DYNAMIC_RESULT_SETS_RETURNED = '0100C'; |
|
22
|
|
|
const DEPRECATED_FEATURE = '01P01'; |
|
23
|
|
|
const NO_DATA = '02000'; |
|
24
|
|
|
const NO_ADDITIONAL_DYNAMIC_RESULT_SETS_RETURNED = '02001'; |
|
25
|
|
|
const SQL_STATEMENT_NOT_YET_COMPLETE = '03000'; |
|
26
|
|
|
const CONNECTION_EXCEPTION = '08000'; |
|
27
|
|
|
const SQLCLIENT_UNABLE_TO_ESTABLISH_SQLCONNECTION = '08001'; |
|
28
|
|
|
const CONNECTION_DOES_NOT_EXIST = '08003'; |
|
29
|
|
|
const SQLSERVER_REJECTED_ESTABLISHMENT_OF_SQLCONNECTION = '08004'; |
|
30
|
|
|
const CONNECTION_FAILURE = '08006'; |
|
31
|
|
|
const TRANSACTION_RESOLUTION_UNKNOWN = '08007'; |
|
32
|
|
|
const PROTOCOL_VIOLATION = '08P01'; |
|
33
|
|
|
const TRIGGERED_ACTION_EXCEPTION = '09000'; |
|
34
|
|
|
const FEATURE_NOT_SUPPORTED = '0A000'; |
|
35
|
|
|
const INVALID_TRANSACTION_INITIATION = '0B000'; |
|
36
|
|
|
const LOCATOR_EXCEPTION = '0F000'; |
|
37
|
|
|
const INVALID_LOCATOR_SPECIFICATION = '0F001'; |
|
38
|
|
|
const INVALID_GRANTOR = '0L000'; |
|
39
|
|
|
const INVALID_GRANT_OPERATION = '0LP01'; |
|
40
|
|
|
const INVALID_ROLE_SPECIFICATION = '0P000'; |
|
41
|
|
|
const DIAGNOSTICS_EXCEPTION = '0Z000'; |
|
42
|
|
|
const STACKED_DIAGNOSTICS_ACCESSED_WITHOUT_ACTIVE_HANDLER = '0Z002'; |
|
43
|
|
|
const CASE_NOT_FOUND = '20000'; |
|
44
|
|
|
const CARDINALITY_VIOLATION = '21000'; |
|
45
|
|
|
const DATA_EXCEPTION = '22000'; |
|
46
|
|
|
const STRING_DATA_RIGHT_TRUNCATION_EXCEPTION = '22001'; |
|
47
|
|
|
const NULL_VALUE_NO_INDICATOR_PARAMETER = '22002'; |
|
48
|
|
|
const NUMERIC_VALUE_OUT_OF_RANGE = '22003'; |
|
49
|
|
|
const NULL_VALUE_NOT_ALLOWED = '22004'; |
|
50
|
|
|
const ERROR_IN_ASSIGNMENT = '22005'; |
|
51
|
|
|
const INVALID_DATETIME_FORMAT = '22007'; |
|
52
|
|
|
const DATETIME_FIELD_OVERFLOW = '22008'; |
|
53
|
|
|
const INVALID_TIME_ZONE_DISPLACEMENT_VALUE = '22009'; |
|
54
|
|
|
const ESCAPE_CHARACTER_CONFLICT = '2200B'; |
|
55
|
|
|
const INVALID_USE_OF_ESCAPE_CHARACTER = '2200C'; |
|
56
|
|
|
const INVALID_ESCAPE_OCTET = '2200D'; |
|
57
|
|
|
const ZERO_LENGTH_CHARACTER_STRING = '2200F'; |
|
58
|
|
|
const MOST_SPECIFIC_TYPE_MISMATCH = '2200G'; |
|
59
|
|
|
/** @since PostgreSQL 10 */ |
|
60
|
|
|
const SEQUENCE_GENERATOR_LIMIT_EXCEEDED = '2200H'; |
|
61
|
|
|
const NOT_AN_XML_DOCUMENT = '2200L'; |
|
62
|
|
|
const INVALID_XML_DOCUMENT = '2200M'; |
|
63
|
|
|
const INVALID_XML_CONTENT = '2200N'; |
|
64
|
|
|
const INVALID_XML_COMMENT = '2200S'; |
|
65
|
|
|
const INVALID_XML_PROCESSING_INSTRUCTION = '2200T'; |
|
66
|
|
|
const INVALID_INDICATOR_PARAMETER_VALUE = '22010'; |
|
67
|
|
|
const SUBSTRING_ERROR = '22011'; |
|
68
|
|
|
const DIVISION_BY_ZERO = '22012'; |
|
69
|
|
|
const INVALID_ARGUMENT_FOR_NTILE_FUNCTION = '22014'; |
|
70
|
|
|
const INTERVAL_FIELD_OVERFLOW = '22015'; |
|
71
|
|
|
const INVALID_ARGUMENT_FOR_NTH_VALUE_FUNCTION = '22016'; |
|
72
|
|
|
const INVALID_CHARACTER_VALUE_FOR_CAST = '22018'; |
|
73
|
|
|
const INVALID_ESCAPE_CHARACTER = '22019'; |
|
74
|
|
|
const INVALID_REGULAR_EXPRESSION = '2201B'; |
|
75
|
|
|
const INVALID_ARGUMENT_FOR_LOGARITHM = '2201E'; |
|
76
|
|
|
const INVALID_ARGUMENT_FOR_POWER_FUNCTION = '2201F'; |
|
77
|
|
|
const INVALID_ARGUMENT_FOR_WIDTH_BUCKET_FUNCTION = '2201G'; |
|
78
|
|
|
const INVALID_ROW_COUNT_IN_LIMIT_CLAUSE = '2201W'; |
|
79
|
|
|
const INVALID_ROW_COUNT_IN_RESULT_OFFSET_CLAUSE = '2201X'; |
|
80
|
|
|
const CHARACTER_NOT_IN_REPERTOIRE = '22021'; |
|
81
|
|
|
const INDICATOR_OVERFLOW = '22022'; |
|
82
|
|
|
const INVALID_PARAMETER_VALUE = '22023'; |
|
83
|
|
|
const UNTERMINATED_C_STRING = '22024'; |
|
84
|
|
|
const INVALID_ESCAPE_SEQUENCE = '22025'; |
|
85
|
|
|
const STRING_DATA_LENGTH_MISMATCH = '22026'; |
|
86
|
|
|
const TRIM_ERROR = '22027'; |
|
87
|
|
|
const ARRAY_SUBSCRIPT_ERROR = '2202E'; |
|
88
|
|
|
/** @since PostgreSQL 9.5 */ |
|
89
|
|
|
const INVALID_TABLESAMPLE_REPEAT = '2202G'; |
|
90
|
|
|
/** @since PostgreSQL 9.5 */ |
|
91
|
|
|
const INVALID_TABLESAMPLE_ARGUMENT = '2202H'; |
|
92
|
|
|
const FLOATING_POINT_EXCEPTION = '22P01'; |
|
93
|
|
|
const INVALID_TEXT_REPRESENTATION = '22P02'; |
|
94
|
|
|
const INVALID_BINARY_REPRESENTATION = '22P03'; |
|
95
|
|
|
const BAD_COPY_FILE_FORMAT = '22P04'; |
|
96
|
|
|
const UNTRANSLATABLE_CHARACTER = '22P05'; |
|
97
|
|
|
const NONSTANDARD_USE_OF_ESCAPE_CHARACTER = '22P06'; |
|
98
|
|
|
const INTEGRITY_CONSTRAINT_VIOLATION = '23000'; |
|
99
|
|
|
const RESTRICT_VIOLATION = '23001'; |
|
100
|
|
|
const NOT_NULL_VIOLATION = '23502'; |
|
101
|
|
|
const FOREIGN_KEY_VIOLATION = '23503'; |
|
102
|
|
|
const UNIQUE_VIOLATION = '23505'; |
|
103
|
|
|
const CHECK_VIOLATION = '23514'; |
|
104
|
|
|
const EXCLUSION_VIOLATION = '23P01'; |
|
105
|
|
|
const INVALID_CURSOR_STATE = '24000'; |
|
106
|
|
|
const INVALID_TRANSACTION_STATE = '25000'; |
|
107
|
|
|
const ACTIVE_SQL_TRANSACTION = '25001'; |
|
108
|
|
|
const BRANCH_TRANSACTION_ALREADY_ACTIVE = '25002'; |
|
109
|
|
|
const INAPPROPRIATE_ACCESS_MODE_FOR_BRANCH_TRANSACTION = '25003'; |
|
110
|
|
|
const INAPPROPRIATE_ISOLATION_LEVEL_FOR_BRANCH_TRANSACTION = '25004'; |
|
111
|
|
|
const NO_ACTIVE_SQL_TRANSACTION_FOR_BRANCH_TRANSACTION = '25005'; |
|
112
|
|
|
const READ_ONLY_SQL_TRANSACTION = '25006'; |
|
113
|
|
|
const SCHEMA_AND_DATA_STATEMENT_MIXING_NOT_SUPPORTED = '25007'; |
|
114
|
|
|
const HELD_CURSOR_REQUIRES_SAME_ISOLATION_LEVEL = '25008'; |
|
115
|
|
|
const NO_ACTIVE_SQL_TRANSACTION = '25P01'; |
|
116
|
|
|
const IN_FAILED_SQL_TRANSACTION = '25P02'; |
|
117
|
|
|
/** @since PostgreSQL 9.6 */ |
|
118
|
|
|
const IDLE_IN_TRANSACTION_SESSION_TIMEOUT = '25P03'; |
|
119
|
|
|
const INVALID_SQL_STATEMENT_NAME = '26000'; |
|
120
|
|
|
const TRIGGERED_DATA_CHANGE_VIOLATION = '27000'; |
|
121
|
|
|
const INVALID_AUTHORIZATION_SPECIFICATION = '28000'; |
|
122
|
|
|
const INVALID_PASSWORD = '28P01'; |
|
123
|
|
|
const DEPENDENT_PRIVILEGE_DESCRIPTORS_STILL_EXIST = '2B000'; |
|
124
|
|
|
const DEPENDENT_OBJECTS_STILL_EXIST = '2BP01'; |
|
125
|
|
|
const INVALID_TRANSACTION_TERMINATION = '2D000'; |
|
126
|
|
|
const SQL_ROUTINE_EXCEPTION = '2F000'; |
|
127
|
|
|
const MODIFYING_SQL_DATA_NOT_PERMITTED_BY_SQL_ROUTINE = '2F002'; |
|
128
|
|
|
const PROHIBITED_SQL_STATEMENT_ATTEMPTED_BY_SQL_ROUTINE = '2F003'; |
|
129
|
|
|
const READING_SQL_DATA_NOT_PERMITTED_BY_SQL_ROUTINE = '2F004'; |
|
130
|
|
|
const FUNCTION_EXECUTED_NO_RETURN_STATEMENT = '2F005'; |
|
131
|
|
|
const INVALID_CURSOR_NAME = '34000'; |
|
132
|
|
|
const EXTERNAL_ROUTINE_EXCEPTION = '38000'; |
|
133
|
|
|
const CONTAINING_SQL_NOT_PERMITTED = '38001'; |
|
134
|
|
|
const MODIFYING_SQL_DATA_NOT_PERMITTED_BY_EXTERNAL_ROUTINE = '38002'; |
|
135
|
|
|
const PROHIBITED_SQL_STATEMENT_ATTEMPTED_BY_EXTERNAL_ROUTINE = '38003'; |
|
136
|
|
|
const READING_SQL_DATA_NOT_PERMITTED_BY_EXTERNAL_ROUTINE = '38004'; |
|
137
|
|
|
const EXTERNAL_ROUTINE_INVOCATION_EXCEPTION = '39000'; |
|
138
|
|
|
const INVALID_SQLSTATE_RETURNED = '39001'; |
|
139
|
|
|
const NULL_VALUE_NOT_ALLOWED_IN_EXTERNAL_ROUTINE = '39004'; |
|
140
|
|
|
const TRIGGER_PROTOCOL_VIOLATED = '39P01'; |
|
141
|
|
|
const SRF_PROTOCOL_VIOLATED = '39P02'; |
|
142
|
|
|
/** @since PostgreSQL 9.5 */ |
|
143
|
|
|
const EVENT_TRIGGER_PROTOCOL_VIOLATED = '39P03'; |
|
144
|
|
|
const SAVEPOINT_EXCEPTION = '3B000'; |
|
145
|
|
|
const INVALID_SAVEPOINT_SPECIFICATION = '3B001'; |
|
146
|
|
|
const INVALID_CATALOG_NAME = '3D000'; |
|
147
|
|
|
const INVALID_SCHEMA_NAME = '3F000'; |
|
148
|
|
|
const TRANSACTION_ROLLBACK = '40000'; |
|
149
|
|
|
const SERIALIZATION_FAILURE = '40001'; |
|
150
|
|
|
const TRANSACTION_INTEGRITY_CONSTRAINT_VIOLATION = '40002'; |
|
151
|
|
|
const STATEMENT_COMPLETION_UNKNOWN = '40003'; |
|
152
|
|
|
const DEADLOCK_DETECTED = '40P01'; |
|
153
|
|
|
const SYNTAX_ERROR_OR_ACCESS_RULE_VIOLATION = '42000'; |
|
154
|
|
|
const INSUFFICIENT_PRIVILEGE = '42501'; |
|
155
|
|
|
const SYNTAX_ERROR = '42601'; |
|
156
|
|
|
const INVALID_NAME = '42602'; |
|
157
|
|
|
const INVALID_COLUMN_DEFINITION = '42611'; |
|
158
|
|
|
const NAME_TOO_LONG = '42622'; |
|
159
|
|
|
const DUPLICATE_COLUMN = '42701'; |
|
160
|
|
|
const AMBIGUOUS_COLUMN = '42702'; |
|
161
|
|
|
const UNDEFINED_COLUMN = '42703'; |
|
162
|
|
|
const UNDEFINED_OBJECT = '42704'; |
|
163
|
|
|
const DUPLICATE_OBJECT = '42710'; |
|
164
|
|
|
const DUPLICATE_ALIAS = '42712'; |
|
165
|
|
|
const DUPLICATE_FUNCTION = '42723'; |
|
166
|
|
|
const AMBIGUOUS_FUNCTION = '42725'; |
|
167
|
|
|
const GROUPING_ERROR = '42803'; |
|
168
|
|
|
const DATATYPE_MISMATCH = '42804'; |
|
169
|
|
|
const WRONG_OBJECT_TYPE = '42809'; |
|
170
|
|
|
const INVALID_FOREIGN_KEY = '42830'; |
|
171
|
|
|
const CANNOT_COERCE = '42846'; |
|
172
|
|
|
const UNDEFINED_FUNCTION = '42883'; |
|
173
|
|
|
/** @since PostgreSQL 10 */ |
|
174
|
|
|
const GENERATED_ALWAYS = '428C9'; |
|
175
|
|
|
const RESERVED_NAME = '42939'; |
|
176
|
|
|
const UNDEFINED_TABLE = '42P01'; |
|
177
|
|
|
const UNDEFINED_PARAMETER = '42P02'; |
|
178
|
|
|
const DUPLICATE_CURSOR = '42P03'; |
|
179
|
|
|
const DUPLICATE_DATABASE = '42P04'; |
|
180
|
|
|
const DUPLICATE_PREPARED_STATEMENT = '42P05'; |
|
181
|
|
|
const DUPLICATE_SCHEMA = '42P06'; |
|
182
|
|
|
const DUPLICATE_TABLE = '42P07'; |
|
183
|
|
|
const AMBIGUOUS_PARAMETER = '42P08'; |
|
184
|
|
|
const AMBIGUOUS_ALIAS = '42P09'; |
|
185
|
|
|
const INVALID_COLUMN_REFERENCE = '42P10'; |
|
186
|
|
|
const INVALID_CURSOR_DEFINITION = '42P11'; |
|
187
|
|
|
const INVALID_DATABASE_DEFINITION = '42P12'; |
|
188
|
|
|
const INVALID_FUNCTION_DEFINITION = '42P13'; |
|
189
|
|
|
const INVALID_PREPARED_STATEMENT_DEFINITION = '42P14'; |
|
190
|
|
|
const INVALID_SCHEMA_DEFINITION = '42P15'; |
|
191
|
|
|
const INVALID_TABLE_DEFINITION = '42P16'; |
|
192
|
|
|
const INVALID_OBJECT_DEFINITION = '42P17'; |
|
193
|
|
|
const INDETERMINATE_DATATYPE = '42P18'; |
|
194
|
|
|
const INVALID_RECURSION = '42P19'; |
|
195
|
|
|
const WINDOWING_ERROR = '42P20'; |
|
196
|
|
|
const COLLATION_MISMATCH = '42P21'; |
|
197
|
|
|
const INDETERMINATE_COLLATION = '42P22'; |
|
198
|
|
|
const WITH_CHECK_OPTION_VIOLATION = '44000'; |
|
199
|
|
|
const INSUFFICIENT_RESOURCES = '53000'; |
|
200
|
|
|
const DISK_FULL = '53100'; |
|
201
|
|
|
const OUT_OF_MEMORY = '53200'; |
|
202
|
|
|
const TOO_MANY_CONNECTIONS = '53300'; |
|
203
|
|
|
const CONFIGURATION_LIMIT_EXCEEDED = '53400'; |
|
204
|
|
|
const PROGRAM_LIMIT_EXCEEDED = '54000'; |
|
205
|
|
|
const STATEMENT_TOO_COMPLEX = '54001'; |
|
206
|
|
|
const TOO_MANY_COLUMNS = '54011'; |
|
207
|
|
|
const TOO_MANY_ARGUMENTS = '54023'; |
|
208
|
|
|
const OBJECT_NOT_IN_PREREQUISITE_STATE = '55000'; |
|
209
|
|
|
const OBJECT_IN_USE = '55006'; |
|
210
|
|
|
const CANT_CHANGE_RUNTIME_PARAM = '55P02'; |
|
211
|
|
|
const LOCK_NOT_AVAILABLE = '55P03'; |
|
212
|
|
|
const OPERATOR_INTERVENTION = '57000'; |
|
213
|
|
|
const QUERY_CANCELED = '57014'; |
|
214
|
|
|
const ADMIN_SHUTDOWN = '57P01'; |
|
215
|
|
|
const CRASH_SHUTDOWN = '57P02'; |
|
216
|
|
|
const CANNOT_CONNECT_NOW = '57P03'; |
|
217
|
|
|
const DATABASE_DROPPED = '57P04'; |
|
218
|
|
|
const SYSTEM_ERROR = '58000'; |
|
219
|
|
|
const IO_ERROR = '58030'; |
|
220
|
|
|
const UNDEFINED_FILE = '58P01'; |
|
221
|
|
|
const DUPLICATE_FILE = '58P02'; |
|
222
|
|
|
/** @since PostgreSQL 9.6 */ |
|
223
|
|
|
const SNAPSHOT_TOO_OLD = '72000'; |
|
224
|
|
|
const CONFIG_FILE_ERROR = 'F0000'; |
|
225
|
|
|
const LOCK_FILE_EXISTS = 'F0001'; |
|
226
|
|
|
const FDW_ERROR = 'HV000'; |
|
227
|
|
|
const FDW_OUT_OF_MEMORY = 'HV001'; |
|
228
|
|
|
const FDW_DYNAMIC_PARAMETER_VALUE_NEEDED = 'HV002'; |
|
229
|
|
|
const FDW_INVALID_DATA_TYPE = 'HV004'; |
|
230
|
|
|
const FDW_COLUMN_NAME_NOT_FOUND = 'HV005'; |
|
231
|
|
|
const FDW_INVALID_DATA_TYPE_DESCRIPTORS = 'HV006'; |
|
232
|
|
|
const FDW_INVALID_COLUMN_NAME = 'HV007'; |
|
233
|
|
|
const FDW_INVALID_COLUMN_NUMBER = 'HV008'; |
|
234
|
|
|
const FDW_INVALID_USE_OF_NULL_POINTER = 'HV009'; |
|
235
|
|
|
const FDW_INVALID_STRING_FORMAT = 'HV00A'; |
|
236
|
|
|
const FDW_INVALID_HANDLE = 'HV00B'; |
|
237
|
|
|
const FDW_INVALID_OPTION_INDEX = 'HV00C'; |
|
238
|
|
|
const FDW_INVALID_OPTION_NAME = 'HV00D'; |
|
239
|
|
|
const FDW_OPTION_NAME_NOT_FOUND = 'HV00J'; |
|
240
|
|
|
const FDW_REPLY_HANDLE = 'HV00K'; |
|
241
|
|
|
const FDW_UNABLE_TO_CREATE_EXECUTION = 'HV00L'; |
|
242
|
|
|
const FDW_UNABLE_TO_CREATE_REPLY = 'HV00M'; |
|
243
|
|
|
const FDW_UNABLE_TO_ESTABLISH_CONNECTION = 'HV00N'; |
|
244
|
|
|
const FDW_NO_SCHEMAS = 'HV00P'; |
|
245
|
|
|
const FDW_SCHEMA_NOT_FOUND = 'HV00Q'; |
|
246
|
|
|
const FDW_TABLE_NOT_FOUND = 'HV00R'; |
|
247
|
|
|
const FDW_FUNCTION_SEQUENCE_ERROR = 'HV010'; |
|
248
|
|
|
const FDW_TOO_MANY_HANDLES = 'HV014'; |
|
249
|
|
|
const FDW_INCONSISTENT_DESCRIPTOR_INFORMATION = 'HV021'; |
|
250
|
|
|
const FDW_INVALID_ATTRIBUTE_VALUE = 'HV024'; |
|
251
|
|
|
const FDW_INVALID_STRING_LENGTH_OR_BUFFER_LENGTH = 'HV090'; |
|
252
|
|
|
const FDW_INVALID_DESCRIPTOR_FIELD_IDENTIFIER = 'HV091'; |
|
253
|
|
|
const PLPGSQL_ERROR = 'P0000'; |
|
254
|
|
|
const RAISE_EXCEPTION = 'P0001'; |
|
255
|
|
|
const NO_DATA_FOUND = 'P0002'; |
|
256
|
|
|
const TOO_MANY_ROWS = 'P0003'; |
|
257
|
|
|
/** @since PostgreSQL 9.5 */ |
|
258
|
|
|
const ASSERT_FAILURE = 'P0004'; |
|
259
|
|
|
const INTERNAL_ERROR = 'XX000'; |
|
260
|
|
|
const DATA_CORRUPTED = 'XX001'; |
|
261
|
|
|
const INDEX_CORRUPTED = 'XX002'; |
|
262
|
|
|
|
|
263
|
|
|
|
|
264
|
|
|
private $code; |
|
265
|
|
|
|
|
266
|
|
|
/** |
|
267
|
|
|
* @param string $code SQL STATE code; one of {@link SqlState} constants |
|
268
|
|
|
* @return SqlState |
|
269
|
|
|
*/ |
|
270
|
|
|
public static function fromCode(string $code): SqlState |
|
271
|
|
|
{ |
|
272
|
|
|
return new SqlState($code); |
|
273
|
|
|
} |
|
274
|
|
|
|
|
275
|
|
|
private function __construct(string $code) |
|
276
|
|
|
{ |
|
277
|
|
|
$this->code = $code; |
|
278
|
|
|
} |
|
279
|
|
|
|
|
280
|
|
|
/** |
|
281
|
|
|
* @return string the SQL STATE code; one of {@link SqlState} constants |
|
282
|
|
|
*/ |
|
283
|
|
|
public function getCode(): string |
|
284
|
|
|
{ |
|
285
|
|
|
return $this->code; |
|
286
|
|
|
} |
|
287
|
|
|
|
|
288
|
|
|
/** |
|
289
|
|
|
* @return string the class of the SQL STATE; one of {@link SqlStateClass} constants |
|
290
|
|
|
*/ |
|
291
|
|
|
public function getClass(): string |
|
292
|
|
|
{ |
|
293
|
|
|
return substr($this->code, 0, 2); |
|
294
|
|
|
} |
|
295
|
|
|
} |
|
296
|
|
|
|