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)

Reply via email to