Hello mod_perlers,

I recently updated my server, which was running Debian Sarge, and migrated from mod_perl 1 to 2, among many other upgrades. It wasn't a smooth process, but I suppose skipping three major OS versions I shouldn't have expected it to be.

But the issue I'm asking about today is with DBI (1.612) and Apache::DBI (1.08). In my old configuration they worked fine, but after the upgrade I started seeing tons of errors like this:

DBD::mysql::st execute failed: Commands out of sync; you can't run this command now
DBD::mysql::st fetchrow_hashref failed: fetch() without execute()
Can't set DBI::st=HASH(0xba5fc640)->{NAME}: unrecognised attribute name or invalid value
Can't call method "get" on an undefined value
DBD::mysql::st execute failed: Lost connection to MySQL server during query
DBD driver has not implemented the AutoCommit attribute

So I removed Apache::DBI from my startup.perl, which almost fixed it. But not quite. I would still get occasional errors like this:

DBD::mysql::st fetchrow_hashref failed: fetch() without execute()

One sort of oddball thing I'm doing is using a convenience wrapper that looks like this:

package My::DBI;
use DBI;
sub connect {
        my $class = shift;
        ...
        DBI->connect($dsn, $user, $dbpw, @_);
}

And then elsewhere doing this:

package My::Foo;
use My::DBI;
my $dbh = My::DBI->connect;
sub new {
        my $sth = $dbh->...
}

Thinking that the problem was that $dbh was having some weird scope issue, I moved all the connect calls into the subs that use them. This seems to have solved the second batch of errors, but when I re-enable Apache::DBI, it starts generating tons of the first kind of errors, particularly "Commands out of sync."

I've Googled these errors and haven't found anything that seems applicable.

I appreciate any help. Thanks.

Max

---
Max Pinton, m...@maxgraphic.com
Design your own card at http://www.designyourowncard.com/

Reply via email to