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