forking and InactiveDestroy

the hatter <[email protected]>
Newsgroups gmane.comp.db.mysql.perl
Message-ID <[email protected]>
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/[email protected]
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.