Error code handling in perl

Lists: pgsql-interfaces
From: Elinor Medezinski <elinor(at)bellatrix(dot)tau(dot)ac(dot)il>
To: pgsql-interfaces(at)postgresql(dot)org
Cc: elinor(at)wise(dot)tau(dot)ac(dot)il
Subject: Error code handling in perl
Date: 2004-05-16 11:56:10
Message-ID: 200405161456.10022.elinor@bellatrix.tau.ac.il
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-interfaces


Hi all,

I am populating a table in postgres, writing the script in perl (using DBI),
and I am trying to do some error handling. For example - this should return
an error due to unique violation:
>$sth=$conn->prepare("INSERT INTO tablename (names) values ($name)") or die
"error1 is: ".$sth->err;

>$sth->execute() or do{
> print "state is: ".$sth->state."\n";
> print "err is: ".$sth->err."\n";
>};

I always get the same SQLSTATE and ERROR, no matter what the error is:

>state is: S1000
>err is: 7

although in the documentation it says that the error code is "23505" (unique
violation).
Is there no way to identify the error by code from postgres via perl?

Thanks,
Elinor

-------------------------------------------------------


From: "Greg Sabino Mullane" <greg(at)turnstep(dot)com>
To: pgsql-interfaces(at)postgresql(dot)org
Subject: Re: Error code handling in perl
Date: 2004-05-22 01:00:30
Message-ID: 0d48f697d3e150fd1633875216f4c1be@biglumber.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-interfaces


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


> although in the documentation it says that the error code is
> "23505" (unique violation).
> Is there no way to identify the error by code from postgres
> via perl?

Currently, DBD::Pg does not support the $sth->state method, but
it is high on the todo list and should appear in the next
version.

- --
Greg Sabino Mullane greg(at)turnstep(dot)com
PGP Key: 0x14964AC8 200405212100

-----BEGIN PGP SIGNATURE-----

iD8DBQFArqaMvJuQZxSWSsgRAlYLAKDykM8K4Fyfy+neIjA2a3B+NI4x2wCbBc04
GiaVC2lYiMfuVQfEG/2jKiY=
=1kvf
-----END PGP SIGNATURE-----