On Fri, Oct 21, 2005 at 12:57:19PM -0400, Ted Behling wrote: > I have multiple mod_perl applications running within one Apache instance. > For most of these applications, I want to use Apache::DBI, but I want to > disable it for just one. According to various Web pages, this is not > possible, because Apache::DBI attaches itself to all DBI->connect() calls. I > would have to run my app in a separate Apache instance that excludes > Apache::DBI. > > It looks like it actually is possible to disable Apache::DBI. Apache::DBI > will not be used for a specific DBI connection if its DBI->connect() has a > special value set for the dbi_connect_method attribute, as in: > > $dbh = DBI->connect('dbi:...', '...', '...', { dbi_connect_method => > 'connect' } ); > > Could somebody verify that this is a sane and future-proof approach?
Send me a patch to document it and that'll make it sane and future-proof :) Tim. > >From my reading of the DBI.pm source code, this works because DBI > >defaults to using its own connect() method, then switches to > >Apache::DBI::connect() if Apache::DBI is in use, and finally, looks > >for the "dbi_connect_method" attribute. By setting this attribute to > >the original default, "connect", Apache::DBI is neatly bypassed. > > This would be more elegant if a future version of DBI were to include > support for a "disable_apache_dbi" attribute. I think this might > involve just a simple addition to DBI::connect().