Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hi All,

I am having problems with my script when i use the -w flag, I have six mysql statements, which according to the script are not finished before i disconnect from mysql - all such as:
my $sth = $dbh->prepare( "SELECT COUNT(*) FROM table WHERE usernam +e != \"me\"" ) or die DBI->errstr; $sth->execute( ) or die DBI->errstr; my ( $count ) = $sth->fetchrow_array();

Any ideas ? Thanks

Replies are listed 'Best First'.
Re: MySQL Errors
by rob_au (Abbot) on Nov 17, 2001 at 11:30 UTC
    I think we may need to see a little more code to figure out what is going on here. My guess however, is that you are either calling exit without performing $dbh->disconnect or alternatively calling $dbh->disconnect without performing a $sth->finish - Such code order can result in warnings similar to what you describe.

     

    Ooohhh, Rob no beer function well without!

      I agree with rob_au, more code would be helpful.

      Page 117-8 of the _Programming the Perl DBI_...if your error says your disconnect invalidates an active statement handle, you probably have a statement handle that still has valid data that can be fetched from it. The purpose is to help you find places when a fetch loop might have been terminated *before* all the possible data was retrieved and the ACTIVE flag reset. You should read the section I mentioned for more understanding. Still, it probalby doesn't affect your program too much. If it bothers you, use the finish method to clean up. I've found that I have to call $sth_finish() for each statement handle I use in this table-filling script I'm working on. Some one with more expertise could probably point out where I'm causing the warning, but it doesn't seem to affect the output at all.

      I'd like to also point out that this would be a DBI error rather than a MySQL error, if I guessed correctly about which one it was.