On Feb 8, 2011, at 7:36 AM, Perrin Harkins wrote:
I'm just curious why it used to work. It seems like DBI would
reconnect a $dbh closure if it timed out.

One thing that might have changed is your database configuration.
MySQL is often configured to automatically reconnect.

I checked $dbh->{mysql_auto_reconnect} and, as per the docs, it's 1 in a mod_perl script and 0 otherwise. Is there another place to look? It seems like something I'd really want to have on.

That doesn't explain all of your errors though.  I'm guessing that
you're opening a connection during startup and forking with it.  You
need to find that.  Look for things that might open a connection
during startup and move them to ChildInitHandlers instead.

That's puzzling. I'm not forking anywhere in my scripts. I did once try using threads for something, but abandoned it because it segfaulted in mod_perl and it wasn't db-related anyway. My startup.perl (minus my modules) is:

#!/usr/bin/perl
use strict;

# make sure we are in a sane environment.
$ENV{MOD_PERL} or die "not running under mod_perl!";

use ModPerl::Registry ();

# Apache::DBI must be before DBI
#use Apache::DBI ();
use DBI ();

use CGI '-no_xhtml';
CGI->compile(':all');
use GD ();
use MIME::Base64 ();
use Data::Dumper ();
use XML::Simple ();
use XML::Writer ();
use File::Temp;

1;

Does anything there look fishy?

Thanks,

Max

Reply via email to