forking and InactiveDestroy 2005-09-05 - By the hatter
Back I'm having a problem vaguely similar to some in the archives, but I'm not convinced it's the same cause.
I have code that, approximately, says:
$dbopts{'InactiveDestroy'} = 0; $db = DCP::db_connect("dcp",\%dbopts);
my $query = "SELECT * FROM foo"; my $dbq = $db->prepare($query); $dbq->execute;
my $forkid; while (my ($uid,$ip,$lang)=$dbq->fetchrow_array) { $forkid = fork(); next if $forkid != 0;
$dbm = $db->prepare("SELECT * FROM bar"); $dbm->execute; # Line 63 while (my ($port,$proto,$down)=$dbm->fetchrow_array) { # Line 64 #do some stuff }
$dbq->finish; $db->disconnect; exit(0);
}
It runs on several machines, most a bit old, the database server running mysql 3.23.32. A new machine (installed with mysql client and libs from RH FC4) tries to run this script but gives a stack of DBD::mysql::st execute failed: MySQL server has gone away at ./myscript line 63. DBD::mysql::st fetchrow_array failed: fetch() without execute() at ./myscript line 64.
There is some mention of using InactiveDestroy in children, rather than in the parent, but I'm not sure how that would work in this instance (finish/disconn the query and db once inside the main while(), then reconnect ? Doesn't seem to make so much sense)
Any suggestions, or known issues (google and the mailing list archives didn't seem to help)
thanks
the hatter
-- MySQL Perl Mailing List For list archives: http://lists.mysql.com/perl To unsubscribe: http://lists.mysql.com/perl?unsub=mysql@(protected)
|
|