Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Teste om $dbh fungerer

1 view
Skip to first unread message

Morten P

unread,
Feb 14, 2009, 7:45:58 PM2/14/09
to
Jeg har et par dæmoner der starter med at åbne en forbindelse til MySQL
(DBI) og så venter de på en given handling indtræffer.

Men forbindelsen mellem Perl og MySQL når at time ud og så får man en fejl a
la "MySQL has gone away".

Det nytter ikke at teste om $dbh evalurerer til sand, for den er sand selvom
selve forbindelsen er defekt.

Kan man teste om den stadig fungerer på nogen måde inden man udfører det
ønskede kald?

Alternativt skal jeg lave en slags NOP ved med jævne mellemrum at læse fra
en tabel, men det er jo rodet...

Eller man skal udføre kaldet, parse retur værdien og genåbne hvis der står
"MySQL has gone away" men det virker også en smule "forkert" :)


Jesper Krogh

unread,
Feb 15, 2009, 2:27:17 AM2/15/09
to
I dk.edb.programmering.perl, skrev Morten P:

> Jeg har et par dæmoner der starter med at åbne en forbindelse til MySQL
> (DBI) og så venter de på en given handling indtræffer.
>
> Men forbindelsen mellem Perl og MySQL når at time ud og så får man en fejl a
> la "MySQL has gone away".
>
> Det nytter ikke at teste om $dbh evalurerer til sand, for den er sand selvom
> selve forbindelsen er defekt.

$dbd->ping?

Jesper

--
./Jesper Krogh, jes...@krogh.cc, Jabber ID: jes...@jabbernet.dk

Morten P

unread,
Feb 15, 2009, 7:03:02 AM2/15/09
to

"Jesper Krogh" <jes...@krogh.cc> wrote in message
news:gn8g4l$rjb$1...@shrek.krogh.cc...

>I dk.edb.programmering.perl, skrev Morten P:
>> Jeg har et par dæmoner der starter med at åbne en forbindelse til MySQL
>> (DBI) og så venter de på en given handling indtræffer.
>>
>> Men forbindelsen mellem Perl og MySQL når at time ud og så får man en
>> fejl a
>> la "MySQL has gone away".
>>
>> Det nytter ikke at teste om $dbh evalurerer til sand, for den er sand
>> selvom
>> selve forbindelsen er defekt.
>
> $dbd->ping?

Den får jeg ikke helt til at fungere [1]

Når jeg anvender den som nedenfor får jeg:

Uncaught error: dbih_getcom handle DBI::db=HASH(0x8b46eec) is not a DBI
handle (has no magic) at ...


Betjener jeg den forkert?

[1]

sub db_open
{
my $self = shift;

return if defined $self->{'dbh'} && $self->{'dbh'}->ping();

# open DB ...

$self->{'dbh'} = $dbh;
}


0 new messages