Thread: DBD::Pg or DBI breakage?

DBD::Pg or DBI breakage?

From
Zachary Beane
Date:
I've been having trouble getting the proper value of $handle->errstr
or $DBI::errstr. For some reason, it's always giving the scalar 7 back
rather than an informative error message. Here's an script and output:

--- foo.pl ---
#!/usr/bin/perl

use DBI;
my $dbh = DBI->connect("dbi:Pg:dbname=template1", "xach", undef);

my $sql = "bogus sql goes here";
my $sth = $dbh->prepare($sql);
$sth->execute() or die $sth->errstr;

my ($result) = $sth->fetchrow_array();

$sth->finish;

print $result, "\n";
$dbh->disconnect();
--- end ---

When run, it prints out this:
  $ perl foo.pl   DBD::Pg::st execute failed:  at foo.pl line 8.  7 at foo.pl line 8.  Database handle destroyed
withoutexplicit disconnect.
 

Now, I'm not surprised at the "database handle destroyed..." part, but
I can't figure out why i'm getting "7 at foo.pl" and a blank message
in the execute failed string. Any ideas?

Zach
-- 
xach@xach.com     Zachary Beane     http://www.xach.com/


Re: DBD::Pg or DBI breakage?

From
Jeremy Buchmann
Date:
> I've been having trouble getting the proper value of $handle->errstr
> or $DBI::errstr. For some reason, it's always giving the scalar 7 back
> rather than an informative error message. Here's an script and output:
> 
> --- foo.pl ---
> #!/usr/bin/perl
> 
> use DBI;
> my $dbh = DBI->connect("dbi:Pg:dbname=template1", "xach", undef);
> 
> my $sql = "bogus sql goes here";
> my $sth = $dbh->prepare($sql);
> $sth->execute() or die $sth->errstr;
> 
> my ($result) = $sth->fetchrow_array();
> 
> $sth->finish;
> 
> print $result, "\n";
> $dbh->disconnect();
> --- end ---
> 
> When run, it prints out this:
> 
> $ perl foo.pl 
> DBD::Pg::st execute failed:  at foo.pl line 8.
> 7 at foo.pl line 8.
> Database handle destroyed without explicit disconnect.
> 
> Now, I'm not surprised at the "database handle destroyed..." part, but
> I can't figure out why i'm getting "7 at foo.pl" and a blank message
> in the execute failed string. Any ideas?

Try disabling automatic error checking...after the call to DBI->connect, do
this:

$dbh->{PrintError} = 0;

-- Jeremy  [jeremy@wellsgaming.com]



Re: DBD::Pg or DBI breakage?

From
Oleg Bartunov
Date:
Zach,

We just found a bug in DBD-PG 0.98 and sent bug report to Edmund.
You may try our patch:
Regards,
    Oleg