Changing {RaiseError=>0,PrintError=>0} to {RaiseError=>1,PrintError=>1} may 
help you find the issue.

The script must failed on the prepare statement (due to does_not_exist table), 
but you disabled the DBI's exception handling and did not do the handling by 
yourself.

There must be some warning messages you did not provided, beause you enabled 
warning but did not declared the (my) variables; and $s must be a undef value 
due to the failure of prepare which should have a warning message.


Normally, I will enable PrintError (at least in dev environment); and unless I 
like to do exception handling, I eill not disable RaiseError.



________________________________
From: Martin J. Evans <martin.ev...@easysoft.com>
To: dbi-users@perl.org
Sent: Tuesday, October 4, 2011 4:51 AM
Subject: Re: Undefined $DBI::errstr on error using MySql on Windows-7-x64

On 27/09/11 10:51, Tadhg MacCarthy wrote:
> Hello all,
>
> I hope I can get some insight on this issue here.
>
> Hello,
>
> The following code:
>
> use warnings;
> use DBI;
> $h=DBI->connect('dbi:mysql:cq','root','password',{RaiseError=>0,PrintError=>0})
> or die "Connection Failed: $DBI::errstr";
> $s=$h->prepare("select * from does_not_exist");
> $s->execute or die 'Execute Failed with error ['. $s->errstr . ']';
>
> produces the output:
>
> Use of uninitialized value in concatenation (.) or string at
> testmysql.plline 15.
> Execute Failed with error [] at testmysql.pl line 5.

Seems to work fine for me:

perl -le 'use strict; use warnings; use DBI; my $h = 
DBI->connect("dbi:mysql:database=test", "xxx","yyy", {RaiseError => 0, 
PrintError => 0}) or die $DBI::errstr; my $s = $h->prepare(q/select * from 
does_not_exist/) or die $DBI::errstr; $s->execute or die "DBI:" . $DBI::errstr 
. " sth:", $s->errstr;'

DBI:Table 'test.does_not_exist' doesn't exist sth:Table 'test.does_not_exist' 
doesn't exist at -e line 1.

> The environment is:
>
> DBD-mysql 4.0.19
> MySQL: Server version: 5.5.15 MySQL Community Server (GPL)
> Perl 5.14.1: This is perl 5, version 14, subversion 1 (v5.14.1) built for
> MSWin32-x64-multi-thread
> ActivePerl 5.14.1 Build 1401 (64-bit)
> Windows 7 Professional Sevice Pack 1 64 bit

and DBI version?

  
> The code produces the expected output when the operating system is Windows
> XP 32-bit.
>
> Other information:
> Valid SQL works as expected on Windows-7-x64 - it just seems that the error
> string is not set correctly.
>
> Bug reported at:
> https://rt.cpan.org/Public/Bug/Display.html?id=71047
>
> Also posted to StackOverflow:
> http://stackoverflow.com/questions/7432944/undefined-dbierrstr-using-dbi-perl-and-mysql-on-windows-7-x64
>
> Thanks in advance,
> Tadhg
>

Martin
-- 
Martin J. Evans
Easysoft Limited
http://www.easysoft.com

Reply via email to