Thread: Apache::DBI and DBD::Pg
Apache::DBI claims that it will reconnect to a database if it's gone away. DBD::Pg claims that it supports the ping method. However, when I restart my database server while apache2 is running, all mod_perl pages that are database driven return internal server errors, no matter how many times I refresh, with errors like this: [Fri Jan 13 23:46:28 2006] [error] [client 192.168.99.112] DBD::Pg::db prepare_cached failed: FATAL: terminating connection due to administrator command\nserver closed the connection unexpectedly\n\tThis probably means the server terminated abnormally\n\tbefore or while processing the request. Here's what I'm using: DBI - 1.48 DBD::Pg - 1.42 mod_perl2 - 2.000001 Apache::DBI - 0.9901 Has anybody run into this before? Any known workarounds/config changes I need? Thanks, Tyler
Tyler MacDonald <tyler@yi.org> wrote: > [Fri Jan 13 23:46:28 2006] [error] [client 192.168.99.112] DBD::Pg::db > prepare_cached failed: FATAL: terminating connection due to administrator Here's the thing: if your database connection goes away, and Apache::DBI opens a new one, any prepared statement handles you might have become invalid, because prepared statements are per-connection. My way around it is to not use prepared statements. The only cases I have where they would be of benefit would mean storing them across multiple requests, and with Apache::DBI, you can't do that. -- Jeremy | jeremy@exit109.com
On Sun, Jan 15, 2006 at 02:00:15AM +0000, Jeremy Nixon wrote: > Tyler MacDonald <tyler@yi.org> wrote: > > > [Fri Jan 13 23:46:28 2006] [error] [client 192.168.99.112] DBD::Pg::db > > prepare_cached failed: FATAL: terminating connection due to administrator > > Here's the thing: if your database connection goes away, and Apache::DBI > opens a new one, any prepared statement handles you might have become > invalid, because prepared statements are per-connection. > > My way around it is to not use prepared statements. Another, better, way is to use prepare_cached() along with connect_cached(). http://search.cpan.org/src/TIMB/DBI_AdvancedTalk_2004/sld029.htm and later slides. Tim.