> 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]