25P02: in_failed_sql_transaction
PostgreSQLЧто это значит?
Ранее в транзакции уже произошла ошибка; дальнейшие команды в ней выполнить нельзя. Транзакция находится в прерванном состоянии, и принимается только ROLLBACK.
Почему возникает?
Предыдущий оператор в блоке транзакции завершился ошибкой (например, нарушение ограничения), но в той же транзакции продолжают отправляться новые команды. Приложение не перехватывает ошибку и продолжает транзакцию.
Как исправить
Откатите транзакцию: ROLLBACK, затем начните её заново. Если нужно изолировать ошибку блока и продолжить, используйте SAVEPOINT и возвращайтесь к этой точке с помощью ROLLBACK TO SAVEPOINT. В приложении перехватывайте ошибку каждого оператора и корректно управляйте транзакцией (делайте решение о commit/rollback явным).