Getting DBI working during the server life cycle
am 24.01.2010 04:24:14 von Boysenberry Payne
Hello,
I'm trying to connect to my postgresql database using the DBI -> =
Apache::CBI -> DBD::Pg combination of modules.
I'm having trouble understanding Apache::DBI usage as it pertains to =
https pre request server life cycle, in particular during the OpenLogs =
stage.
My trouble comes from an error I'm getting from DBI:
Global $r object is not available. Set:
PerlOptions +GlobalRequest
in httpd.conf at /usr/local/lib/perl5/site_perl/5.10.1/Apache/DBI.pm =
line 144.
So, obviously, the Apache::RequestRec object hasn't been globalized =
because it's before the request stage (the child processes haven't even =
been forked yet.)
If I use DBI in my startup.pl file first, no problems, but Apache::DBI =
says to have it load before DBI to use the persistent connections it =
offers, thus my dilemma.
So, what do I do?
-bop
Re: Getting DBI working during the server life cycle
am 24.01.2010 05:34:47 von Adam Prime
Boysenberry Payne wrote:
> Hello,
>
> I'm trying to connect to my postgresql database using the DBI -> Apache::CBI -> DBD::Pg combination of modules.
> I'm having trouble understanding Apache::DBI usage as it pertains to https pre request server life cycle, in particular during the OpenLogs stage.
> My trouble comes from an error I'm getting from DBI:
>
> Global $r object is not available. Set:
> PerlOptions +GlobalRequest
> in httpd.conf at /usr/local/lib/perl5/site_perl/5.10.1/Apache/DBI.pm line 144.
>
> So, obviously, the Apache::RequestRec object hasn't been globalized because it's before the request stage (the child processes haven't even been forked yet.)
> If I use DBI in my startup.pl file first, no problems, but Apache::DBI says to have it load before DBI to use the persistent connections it offers, thus my dilemma.
>
> So, what do I do?
Don't use Apache::DBI 1.07 and try to do this, because as you've
discovered, it's broken.
see: http://rt.cpan.org/Public/Bug/Display.html?id=36346
Adam
Re: Getting DBI working during the server life cycle
am 24.01.2010 07:34:30 von Boysenberry Payne
I wasn't sure how to do the path mentioned in the link so I just =
manually edited the Apache::DBI file and added the eval around the line =
requesting Apache2::RequestRec and it seems to work now.
Thanks for the heads up. All of the literature I have mentions =
Apache::DBI for use with mod_perl.
I did look at DBI::Class as the Apache::DBI author mentioned, but I =
would rather use Apache::DBI and do the class structure myself.
Seems like an easy enough thing to patch into Apache::DBI to avoid these =
head aches, wonder why the author isn't?
Thanks again,
Boysenberry Payne
On Jan 23, 2010, at 9:34 PM, Adam Prime wrote:
> Boysenberry Payne wrote:
>> Hello,
>> I'm trying to connect to my postgresql database using the DBI -> =
Apache::CBI -> DBD::Pg combination of modules.
>> I'm having trouble understanding Apache::DBI usage as it pertains to =
https pre request server life cycle, in particular during the OpenLogs =
stage.
>> My trouble comes from an error I'm getting from DBI:
>> Global $r object is not available. Set:
>> PerlOptions +GlobalRequest
>> in httpd.conf at /usr/local/lib/perl5/site_perl/5.10.1/Apache/DBI.pm =
line 144.
>> So, obviously, the Apache::RequestRec object hasn't been globalized =
because it's before the request stage (the child processes haven't even =
been forked yet.)
>> If I use DBI in my startup.pl file first, no problems, but =
Apache::DBI says to have it load before DBI to use the persistent =
connections it offers, thus my dilemma.
>> So, what do I do?
>=20
> Don't use Apache::DBI 1.07 and try to do this, because as you've =
discovered, it's broken.
>=20
> see: http://rt.cpan.org/Public/Bug/Display.html?id=3D36346
>=20
> Adam
>=20
>=20