SQL statement in an error report for deferred constraint violation.

Started by Konrad Witaszczykabout 8 years ago2 messagesgeneral
Jump to latest
#1Konrad Witaszczyk
def@FreeBSD.org

Hi,

While PQresultErrorField() from libpq allows to get context in which an error
occurred for immediate constraints, and thus an SQL statement which caused the
constraint violation, I cannot see any way to find out which SQL statement
caused an error in case of deferred constraints, in particular deferred foreign
key constraints.

Is there any way to check which SQL statement or at least which row violated a
constraint when it's deferred? If not does anyone know why there is such
restriction?

Konrad

#2Gao Jack
jackgo73@outlook.com
In reply to: Konrad Witaszczyk (#1)
Re: SQL statement in an error report for deferred constraint violation.

Konrad Witaszczyk wrote

Hi,

While PQresultErrorField() from libpq allows to get context in which an
error

occurred for immediate constraints, and thus an SQL statement which caused
the
constraint violation, I cannot see any way to find out which SQL statement
caused an error in case of deferred constraints, in particular deferred
foreign
key constraints.

Is there any way to check which SQL statement or at least which row
violated a
constraint when it's deferred? If not does anyone know why there is such
restriction?

Konrad

signature.asc (981 bytes)
<http://www.postgresql-archive.org/attachment/6015088/0/signature.asc>

First of all, you need to locate the problem SQL by modifying log
parameters.

sed -ir "s/#*logging_collector.*/logging_collector= on/"
$PGDATA/postgresql.conf
sed -ir "s/#*log_directory.*/log_directory = 'pg_log'/"
$PGDATA/postgresql.conf
sed -ir "s/#*log_statement.*/log_statement= 'all'/" $PGDATA/postgresql.conf

Execute this SQL and send error message in the log.

regards

Jack Gao

--
Sent from: http://www.postgresql-archive.org/PostgreSQL-general-f1843780.html