Коды ошибок PostgreSQL#

Примечание

Эта страница переведена при помощи нейросети GigaChat.

Все сообщения, генерируемые сервером PostgreSQL, имеют пятизначные коды ошибок, которые соответствуют стандартам SQL для кодов «SQLSTATE». Приложениям, которым необходимо знать, какое условие ошибки произошло, следует обычно проверять код ошибки, а не просматривать текстовое сообщение об ошибке. Коды ошибок менее подвержены изменениям между выпусками PostgreSQL и также не зависят от локализации сообщений об ошибках. Обратите внимание, что некоторые, но не все, коды ошибок, производимые PostgreSQL, определены стандартом SQL. Несколько дополнительных кодов ошибок для ситуаций, не определенных стандартом, были придуманы или заимствованы из других баз данных.

Согласно стандарту, первые два символа кода ошибки обозначают класс ошибок, тогда как последние три символа указывают конкретное состояние внутри этого класса. Таким образом, приложение, которое не распознает конкретный код ошибки, все же может понять, что делать, по классу ошибки.

В таблице ниже перечислены все коды ошибок, определенные в PostgreSQL 17.5. Некоторые из них в настоящее время не используются, но определены стандартом SQL. Также показаны классы ошибок. Для каждого класса ошибок существует «стандартный» код ошибки, у которого последние три символа 000. Этот код используется только для условий ошибки, которые попадают в класс, но не имеют более специфического кода.

Символ, показанный в столбце «Имя условия», является именем условия, которое следует использовать в PL/pgSQL. Имена условий могут быть написаны заглавными или строчными буквами. Обратите внимание, что PL/pgSQL не распознает предупреждения, в отличие от имен условий ошибок; это классы 00, 01 и 02.

Для некоторых типов ошибок сервер сообщает имя объекта базы данных (таблицы, столбца таблицы, типа данных или ограничения), связанного с ошибкой, например, имя уникального ограничения, вызвавшего ошибку unique_violation. Такие имена предоставляются в отдельных полях сообщения об ошибке, чтобы приложениям не приходилось пытаться извлекать их из локализованного человекочитаемого текста сообщения. Начиная с версии PostgreSQL 9.3, полная поддержка этой функции существует только для ошибок в классе SQLSTATE 23 (нарушение целостности ограничений), но, вероятно, она будет расширена в будущем.

Коды ошибок PostgreSQL:

Код ошибки

Имя условия

Класс 00 – Успешное завершение

00000

successful_completion

Класс 01 – Предупреждение

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

Класс 02 – Нет данных (это также класс предупреждений в соответствии со стандартом SQL)

02000

no_data

02001

no_additional_dynamic_result_sets_returned

Класс 03 – Оператор SQL еще не завершен

03000

sql_statement_not_yet_complete

Класс 08 – Исключение подключения

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

Класс 09 – Исключение инициированного действия

09000

triggered_action_exception

Класс 0А – Функция не поддерживается

0A000

feature_not_supported

Класс 0В – Недействительная инициация транзакции

0B000

invalid_transaction_initiation

Класс 0F – Исключение локатора

0F000

locator_exception

0F001

invalid_locator_specification

Класс 0L – Недействительный праводатель

0L000

invalid_grantor

0LP01

invalid_grant_operation

Класс 0P – Неверное указание роли

0P000

invalid_role_specification

Класс 0Z – Исключения диагностики

0Z000

diagnostics_exception

0Z002

stacked_diagnostics_accessed_without_active_handler

Класс 20 - Случай не найден

20000

case_not_found

Класс 21 - Нарушение количества

21000

cardinality_violation

Класс 22 - Исключение в данных

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

22013

invalid_preceding_or_following_size

2201B

invalid_regular_expression

2201W

invalid_row_count_in_limit_clause

2201X

invalid_row_count_in_result_offset_clause

2202H

invalid_tablesample_argument

2202G

invalid_tablesample_repeat

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

2200H

sequence_generator_limit_exceeded

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

22030

duplicate_json_object_key_value

22031

invalid_argument_for_sql_json_datetime_function

22032

invalid_json_text

22033

invalid_sql_json_subscript

22034

more_than_one_sql_json_item

22035

no_sql_json_item

22036

non_numeric_sql_json_item

22037

non_unique_keys_in_a_json_object

22038

singleton_sql_json_item_required

22039

sql_json_array_not_found

2203A

sql_json_member_not_found

2203B

sql_json_number_not_found

2203C

sql_json_object_not_found

2203D

too_many_json_array_elements

2203E

too_many_json_object_members

2203F

sql_json_scalar_required

2203G

sql_json_item_cannot_be_cast_to_target_type

Класс 23 - Нарушение ограничения целостности

23000

integrity_constraint_violation

23001

restrict_violation

23502

not_null_violation

23503

foreign_key_violation

23505

unique_violation

23514

check_violation

23P01

exclusion_violation

Класс 24 – Неверное состояние курсора

24000

invalid_cursor_state

Класс 25 – Неверное состояние транзакции

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

25P03

idle_in_transaction_session_timeout

25P04

transaction_timeout

Класс 26 – Неверное имя оператора SQL

26000

invalid_sql_statement_name

Класс 27 – Нарушение изменения триггерных данных

27000

triggered_data_change_violation

Класс 28 – Неверная спецификация авторизации

28000

invalid_authorization_specification

28P01

invalid_password

Класс 2B – Зависимые дескрипторы привилегий все еще существуют

2B000

dependent_privilege_descriptors_still_exist

2BP01

dependent_objects_still_exist

Класс 2D – Некорректное завершение транзакции

2D000

invalid_transaction_termination

Класс 2F – Исключение процедуры SQL

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

Класс 34 – Недопустимое имя курсора

34000

invalid_cursor_name

Класс 38 – Исключение внешней процедуры

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

Класс 39 – Исключение вызова внешней процедуры

39000

external_routine_invocation_exception

39001

invalid_sqlstate_returned

39004

null_value_not_allowed

39P01

trigger_protocol_violated

39P02

srf_protocol_violated

39P03

event_trigger_protocol_violated

Класс 3B – Исключение точки сохранения

3B000

savepoint_exception

3B001

invalid_savepoint_specification

Класс 3D – Недопустимое имя каталога

3D000

invalid_catalog_name

Класс 3F – Недопустимое имя схемы

3F000

invalid_schema_name

Класс 40 – Откат транзакции

40000

transaction_rollback

40002

transaction_integrity_constraint_violation

40001

serialization_failure

40003

statement_completion_unknown

40P01

deadlock_detected

Класс 42 – Синтаксическая ошибка или нарушение правила доступа

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

428C9

generated_always

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

Класс 44 – Нарушение опции WITH CHECK

44000

with_check_option_violation

Класс 53 – Недостаток ресурсов

53000

insufficient_resources

53100

disk_full

53200

out_of_memory

53300

too_many_connections

53400

configuration_limit_exceeded

Класс 54 – Превышено ограничение программы

54000

program_limit_exceeded

54001

statement_too_complex

54011

too_many_columns

54023

too_many_arguments

Класс 55 – Объект не находится в требуемом состоянии

55000

object_not_in_prerequisite_state

55006

object_in_use

55P02

cant_change_runtime_param

55P03

lock_not_available

55P04

unsafe_new_enum_value_usage

Класс 57 – Вмешательство оператора

57000

operator_intervention

57014

query_canceled

57P01

admin_shutdown

57P02

crash_shutdown

57P03

cannot_connect_now

57P04

database_dropped

57P05

idle_session_timeout

Класс 58 – Ошибка системы (ошибки вне PostgreSQL)

58000

system_error

58030

io_error

58P01

undefined_file

58P02

duplicate_file

Класс F0 – Ошибка файла конфигурации

F0000

config_file_error

F0001

lock_file_exists

Класс HV – Ошибка внешней обертки данных (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

Класс P0 – Ошибка PL/pgSQL

P0000

plpgsql_error

P0001

raise_exception

P0002

no_data_found

P0003

too_many_rows

P0004

assert_failure

Класс XX – Внутренняя ошибка

XX000

internal_error

XX001

data_corrupted

XX002

index_corrupted