Re: Class::DBI modules not properly loaded under mod_perl ?

[prev] [thread] [next] [Date index for 2004/10/28]

From: Perrin Harkins
Subject: Re: Class::DBI modules not properly loaded under mod_perl ?
Date: 18:29 on 28 Oct 2004
On Thu, 2004-10-28 at 13:01, Michele Valzelli wrote:
> That's what I'va been trying to do in the last days, but I'v encountered 
> some problems. After searching in the list archives, I found this thread
> 
> http://groups.kasei.com/mail/arc/cdbi-talk/2004-08/msg00007.html
> 
> that explains what my problem is: I'm using set_up_table and trying ti 
> preload my modules in a startup.pl script. I didn't find an answer to the 
> question, though.

I think I had a later message in here that explained how I was working
around it.

>  I think that adding this line
> 
> MyBaseClass->dbMain->disconnect;
> 
> at the end of my startup.pl script, should ensure that the connection to 
> the db is closed before forkig. Is it right?

Yes, and that should be enough for a non-transactional database. 
However, if you use Postgres or MySQL with InnoDB tables, you need the
cleanup handler that Apache::DBI adds to each request, and Ima::DBI
(used by Class::DBI) will prevent that from happening.  I have an
explanation of it, with code to work around it here:
http://marc.theaimsgroup.com/?l=apache-modperl&m=109882196005065&w=2

Hmm, now that I think about this more, I wonder if changing Ima::DBI is
the best way to handle this.  It already uses connect_cached, so the
only thing we really need to add is the cleanup handler.  Maybe that
should be split out into a separate module.

> Then there is another issue that i suspect might cause me problems if I 
> preload my modules: in my base class, just after the set_db i do a:
> 
> __PACKAGE__->db_Main->do("ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD\"T\"HH24:MI:SS'");
> 
> I'm not sure this line will get executed every time apache connects to the 
> database if the module is already loaded into memory. So where should I 
> put this line to ensure ti gets called for every db connection?

You can put this into the override of db_Main() that I have in the
linked post above, or override something at a lower level within
Ima::DBI to do it.  Your current method will definitely not get executed
every time.  (Any reason not change it globally?)

- Perrin

(message missing)

pager
David R. Baird 09:48 on 20 Oct 2004

Re: pager
David R. Baird 13:53 on 20 Oct 2004

Re: pager
David R. Baird 21:00 on 20 Oct 2004

Re: pager
merlyn (Randal L. Schwartz) 02:55 on 21 Oct 2004

Re: pager
David R. Baird 10:46 on 21 Oct 2004

Re: pager
David R. Baird 11:30 on 21 Oct 2004

Re: pager
merlyn (Randal L. Schwartz) 12:10 on 21 Oct 2004

Re: pager
David R. Baird 23:08 on 21 Oct 2004

Re: pager
Cees Hek 00:22 on 22 Oct 2004

Re: pager
Tony Bowden 08:34 on 22 Oct 2004

Re: pager
Emanuele Zeppieri 13:51 on 22 Oct 2004

Re: pager
David R. Baird 14:41 on 22 Oct 2004

Re: pager
David R. Baird 09:20 on 22 Oct 2004

Class::DBI modules not properly loaded under mod_perl ?
Michele Valzelli 10:55 on 22 Oct 2004

Re: pager
Emanuele Zeppieri 12:21 on 22 Oct 2004

Re: pager
David R. Baird 12:52 on 22 Oct 2004

Re: pager
Emanuele Zeppieri 15:33 on 22 Oct 2004

Re: pager
David R. Baird 16:09 on 22 Oct 2004

Re: pager
David R. Baird 23:30 on 07 Nov 2004

RE: pager
Emanuele Zeppieri 03:50 on 14 Nov 2004

Re: pager
Emanuele Zeppieri 13:25 on 22 Oct 2004

Re: Class::DBI modules not properly loaded under mod_perl ?
Perrin Harkins 18:29 on 28 Oct 2004

Generated at 11:35 on 01 Dec 2004 by mariachi v0.52