Thread: Pgsql errors, DBI and CGI::Carp

Pgsql errors, DBI and CGI::Carp

From
Toomas Vendelin
Date:
I'm writing CGI scripts in Perl using Postgresql via DBI interface.
RAISE_ERROR is on.

For some reason (unlike with MySQL), when a Perl script dies from
Postgresql error, the line number of Perl script where the error
occurred is not reported, just the SQL statement line number is given.
In a longer script looking it may become a tedious task to guess the
line in script that caused the problem. Is that an expected behavior
or am I missing something?

Toomas

Re: Pgsql errors, DBI and CGI::Carp

From
"Daniel Verite"
Date:
    Toomas Vendelin wrote:

> I'm writing CGI scripts in Perl using Postgresql via DBI interface.
> RAISE_ERROR is on.
>
> For some reason (unlike with MySQL), when a Perl script dies from
> Postgresql error, the line number of Perl script where the error
> occurred is not reported, just the SQL statement line number is
given.
> In a longer script looking it may become a tedious task to guess the

> line in script that caused the problem. Is that an expected behavior

> or am I missing something?

It works for me:

$ cat dberr.pl
use CGI::Carp;
use DBI;
my $dbh=DBI->connect("dbi:Pg:dbname=test") or die;
$dbh->do("bogus SQL");

$ perl dberr.pl
[Fri May  1 15:05:08 2009] dberr.pl: DBD::Pg::db do failed: ERROR:
syntax error at or near "bogus"
[Fri May  1 15:05:08 2009] dberr.pl: LINE 1: bogus SQL
[Fri May  1 15:05:08 2009] dberr.pl:         ^ at dberr.pl line 4.

If you run that trivial program in your environment, what output do you
get?

Best regards,
--
Daniel
PostgreSQL-powered mail user agent and storage:
http://www.manitou-mail.org

Re: Pgsql errors, DBI and CGI::Carp

From
Toomas Vendelin
Date:
My mistake was using DBD::PgPP (as suggested in "Beginning Databases
with PostgreSQL" by Neil Matthew and Richard stones, Apress) instead
of DBD::Pg.

Thanks for help!


On May 1, 2009, at 4:07 PM, Daniel Verite wrote:

>     Toomas Vendelin wrote:
>
>> I'm writing CGI scripts in Perl using Postgresql via DBI
>> interface.  RAISE_ERROR is on.
>> For some reason (unlike with MySQL), when a Perl script dies from
>> Postgresql error, the line number of Perl script where the error
>> occurred is not reported, just the SQL statement line number is
> given.
>> In a longer script looking it may become a tedious task to guess the
>
>> line in script that caused the problem. Is that an expected behavior
>
>> or am I missing something?
>
> It works for me:
>
> $ cat dberr.pl
> use CGI::Carp;
> use DBI;
> my $dbh=DBI->connect("dbi:Pg:dbname=test") or die;
> $dbh->do("bogus SQL");
>
> $ perl dberr.pl
> [Fri May  1 15:05:08 2009] dberr.pl: DBD::Pg::db do failed: ERROR:
> syntax error at or near "bogus"
> [Fri May  1 15:05:08 2009] dberr.pl: LINE 1: bogus SQL
> [Fri May  1 15:05:08 2009] dberr.pl:         ^ at dberr.pl line 4.
>
> If you run that trivial program in your environment, what output do
> you get?
>
> Best regards,
> --
> Daniel
> PostgreSQL-powered mail user agent and storage:
> http://www.manitou-mail.org
>
> --
> Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-general