You've failed to close your prepare() statements with finish()

See the perldoc on DBI again.


Jaime Teng wrote:
> 
> Hi,
> 
> I have been pulling my hair due to this annoying error. x(
> 
> ****************************************************************************
> DBI::db=HASH(0x1d2998c)->disconnect invalidates 1 active statement handle
> (either destroy statement handles or call finish on them before
> disconnecting)
> at C:\WEBSITE\script\default.pl line 721.
> ****************************************************************************
> 
> It is a Perl CGI script and at line 721 is a simple disconnect command:
> 
> 721 $DBH->disconnect;
> 722
> 723 binmode STDOUT;
> 724 print "Content-type: text/html\cM\cJ";
> 725 print "Content-length: ",length($HTTP),"\cM\cJ";
> 726 print "\cM\cJ";
> 727 print $HTTP;
> 
> The error message is straight forward and means that I have an open
> mySQL handle that is not closed; example:
> 
> $sth=$DBH->prepare("SELECT ......");
> $sth->execute;
> $DBH->disconnect;   <--- should have been a fetch before disconnect.
> 
> But I am dead sure I have a result collector:
> $sth=$DBH->prepare("SELECT ......");
> $sth->execute;
> $result = $sth->fetchrow;
> 
> I only use three functions: prepare, execute and fetchrow.
> 
> For all intents and purposes, I have reviewed the script line per line
> and even made sure that each select will give only one result by adding
> "LIMIT 1"
> $sth=$DBH->prepare("SELECT ...... LIMIT 1");
> 
> arrrrrggggggggg!
> 
> I am Perl built 626 on win2000. Mysql 3.23.37
> 
> I have encountered this kind of errors on Linux+Apache before and I solved it
> via:
> $sth=$DBH->prepare("SELECT ......LIMIT 1");
> $sth->execute;
> while ( $result = $sth->fetchrow ) {1};
> 
> It appeared to me that even if only one result is to be expected, mysql
> would throw more than one. or is this a problem with DBD-Mysql module?
> 
> regards,
> Jaime
> 
> ---------------------------------------------------------------------
> Before posting, please check:
>    http://www.mysql.com/manual.php   (the manual)
>    http://lists.mysql.com/           (the list archive)
> 
> To request this thread, e-mail <[EMAIL PROTECTED]>
> To unsubscribe, e-mail <[EMAIL PROTECTED]>
> Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to