DBAtlas · Атлас эксплуатации баз данных

40003: statement_completion_unknown

PostgreSQL

Что это значит?

Результат транзакции неизвестен; соединение с сервером разорвалось до того, как стало ясно, завершилась ли транзакция (особенно во время COMMIT). Клиент не может знать наверняка, зафиксированы ли изменения надёжно. Относится к классу 40 (transaction_rollback).

Почему возникает?

После отправки COMMIT, но до получения ответа пропала сеть, сервер аварийно завершился или произошла отработка отказа (failover). Транзакция могла завершиться на сервере, а могла быть откачена.

Как исправить

Не повторяйте транзакцию вслепую; сначала проверьте, была ли она фактически применена (например, запросом ожидаемой строки). Проектируйте транзакции идемпотентными; используйте уникальные бизнес-ключи/ключи идемпотентности. Реализуйте надёжную логику переподключения и проверки в пуле соединений.

Открыть в DBAtlas →

Ещё по этой СУБД