40003: statement_completion_unknown
PostgreSQLЧто это значит?
Результат транзакции неизвестен; соединение с сервером разорвалось до того, как стало ясно, завершилась ли транзакция (особенно во время COMMIT). Клиент не может знать наверняка, зафиксированы ли изменения надёжно. Относится к классу 40 (transaction_rollback).
Почему возникает?
После отправки COMMIT, но до получения ответа пропала сеть, сервер аварийно завершился или произошла отработка отказа (failover). Транзакция могла завершиться на сервере, а могла быть откачена.
Как исправить
Не повторяйте транзакцию вслепую; сначала проверьте, была ли она фактически применена (например, запросом ожидаемой строки). Проектируйте транзакции идемпотентными; используйте уникальные бизнес-ключи/ключи идемпотентности. Реализуйте надёжную логику переподключения и проверки в пуле соединений.