Thannk you very much for your patience. But after hours I finally found the answer myself. It's as stunningly silly as always: Never put an "open" db handler on a cache - and never try to revive it later... -:D
Michael A Chase wrote: > > On Thu, 29 Aug 2002 15:31:03 +0200 THC Soft <[EMAIL PROTECTED]> wrote: > > > The system I use is Linux 2.4.17, Perl 5.6.1, DBI 1.28. > > > > I'm working on a web application consisting mainly of a CMS. Now > > consider the following simple test script: > > > > use Content::Category; > > use DBD::mysql; > > That should be 'use DBI;'. Which DBD you are using is specified in the > connect() call. > > > use Data::Dumper; > > > > my $dbh; > > $dbh = DBI->connect('DBI:mysql:database=baz', 'foo', 'me', > > { RaiseError => 1, AutoCommit => 1 }) || die > > $dbh->errstr; > > With 'RaissError => 1', connect will not return if it fails, so die() will > never get called. > > The 'DBI:' in the first argument to connect() should be 'dbi:'. > > > print Dumper($dbh); > > my $cat = Content::Category->new ($dbh, { 'arg1' => 'something', > > 'id' => 1 > > } ); > > > > $dbh->disconnect; > > > > Content::Category does not query the database itself, but passes the > > handler to its SUPER constructor in Content.pm. The funny thing now is > > that, although Data::Dumper prints out something hopefully valuable > > (VAR1 = bless ( {}, DBI::db } ), I get (DBI_TRACE = 5) the following > > strange output: > > I could not find either Content or Content::Category in CPAN. Are they DBI > aware? > > > <- connect= DBI::db=HASH(0x83c6a08) > > SV = RV(0x8380498) at 0x83e08b4 > > REFCNT = 1 > > FLAGS = (ROK) > > RV = 0x83e08c0 > > (in cleanup) dbih_getcom handle DBI::db=HASH(0x83e08c0) is not a DBI > > handle (has no magic) at > > /usr/local/lib/perl5/site_perl/5.6.1/i686-linux/Forum/Content/Node.pm > > line 343. > > SV = RV(0x8380474) at 0xbffff3a0 > > REFCNT = 1 > > FLAGS = (ROK,READONLY) > > RV = 0x83e08c0 > > SV = RV(0x838048c) at 0xbffff250 > > REFCNT = 1 > > FLAGS = (ROK,READONLY) > > RV = 0x83e08fc > > (in cleanup) dbih_getcom handle DBI::dr=HASH(0x83e08fc) is not a DBI > > handle (has no magic) at > > /usr/local/lib/perl5/site_perl/5.6.1/i686-linux/Forum/Content/Node.pm > > line 343. > > -> disconnect for DBD::mysql::db (DBI::db=HASH(0x83c6a08)~0x83c69c0) > > &imp_dbh->mysql: 83177cc > > <- disconnect= 1 at sbin/test.pl line 29 > > <> DESTROY ignored for outer > > > > What is going on? Can anyone give me a hint? > > It looks like something is overwriting parts of the memory refered to by > $dbh. > > Were you getting the same error before you tried dumping $dbh with > Dumper()? > -- > Mac :}) > ** I normally forward private questions to the appropriate mail list. ** > Ask Smarter: http://www.tuxedo.org/~esr/faqs/smart-questions.html > Give a hobbit a fish and he eats fish for a day. > Give a hobbit a ring and he eats fish for an age. -- Warning: watching a visual computer device is harmful and will cause reflective intelligence! (The European Style Council)