Hi,

I'm trying to initiate connections in startup.pl for later use (mod_perl
1.xx):

(startup.pl):
use Apache::DBI;
...
Apache::DBI->connect_on_init(
        'dbi:Pg:dbname=mydb;host=myhost;port=5432',
        'nobody','');

Later, I am attempting to reuse these connections in an Apache::Registry
script using

use DBI;
$dbh=DBI->connect('dbi:Pg:dbname=mydb;host=myhost;port=5432','nobody','');

Now what happens is that each Apache child opens 2 connections to this DS
and presumably the one from startup.pl isn't used. The reason for this
seems to be that the call from startup.pl does not set dbi_connect_method,
while the second call sets it to 'Apache::DBI::connect'. The
Apache::DBI::connect method reuses and caches connections based on a key
that includes this (from the option hash presumably), so the keys differ
for those 2 calls:

first key ($Idx printed from Apache::DBI::connect):
 
dbname=mydb;host=myhost;port=5432^\nobody^\^\AutoCommit=1^\PrintError=1^\Username=nobody

second key:
 
dbname=mydb;host=myhost;port=5432^\nobody^\^\AutoCommit=1^\PrintError=1^\Username=nobody^\dbi_connect_method=Apache::DBI::connect

Can this be avoided somehow so that only 1 connection is initiated and
reused? Is my DBI(1.53) or Apache::DBI(1.04) too old? Is it a bad idea to
set dbi_connect_method explicitly in startup.pl?

Thanks,
 Marinos

Reply via email to