Bookmarks

Yahoo Gmail Google Facebook Delicious Twitter Reddit Stumpleupon Myspace Digg

Search queries

procmail + change subject, w2ksp4.exe download, /proc/kallsyms format, sqldatasource dal, wwwxxxenden, convert raid5 to raid 10 mdadm, apache force chunked, nrao wwwxxx, xxxxxdup, procmail change subject header

Links

XODOX
Impressum

#1: Database handle problem

Posted on 2008-01-14 12:41:20 by Ervin Peters

Icha habe ein klasse database:

use DBI;
use DBD::Pg;

....

sub new
{
my ( $class, ..) = @_;
..
my $self = {};
bless $self, $class;
$dbh = DBI->connect(..);
$self->{dbh} = $dbh;
}

....


Ich übergebe nun vom Kontrollscript entweder das objekt oder das
Databasehandle an ein anders Klassenobjekt:

main.pl:

my $db = database->new(..);
my $session = mysession->new( $db->{dbh} );

und mache dann was in mysession damit:

mysession:
sub new
{
my ($class, $dbh) = @_;
my $self = { _dbh => $dbh };
bless( $self, $class );
}

sub dosomething
{
my ($self) = @_;
my $sql = ...;
$self->{_dbh}->do($sql);
...
}

Das gibt einen Fehler: Can't call method "do" on an undefined value...

Füge ich vor dem 'do' ein

print "$self->{_dbh}"

ein, kommt das raus:

DBI::db=HASH(0x1251060)

Warum funktioniert das nicht? Was mache ich falsch?

GrüÃÂe,
ervin

Report this message

#2: Re: Database handle problem

Posted on 2008-01-14 12:58:25 by Frank Seitz

Ervin Peters wrote:

> $self->{_dbh}->do($sql);
[...]
> Das gibt einen Fehler: Can't call method "do" on an undefined value...
>
> Füge ich vor dem 'do' ein
>
> print "$self->{_dbh}"
>
> ein, kommt das raus:
>
> DBI::db=HASH(0x1251060)

Das kann nicht sein. Perl gibt nicht die Fehlermeldung
"Can't call method on an undefined value", wenn die
Referenz definiert ist.

GrüÃÂe
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel

Report this message

#3: Re: Database handle problem

Posted on 2008-01-14 13:25:26 by Ervin Peters

Am Mon, 14 Jan 2008 12:58:25 +0100 schrieb Frank Seitz:

> Ervin Peters wrote:
>
>> $self->{_dbh}->do($sql);
> [...]
>> Das gibt einen Fehler: Can't call method "do" on an undefined value...
>>
>> Füge ich vor dem 'do' ein
>>
>> print "$self->{_dbh}"
>>
>> ein, kommt das raus:
>>
>> DBI::db=HASH(0x1251060)
>
> Das kann nicht sein. Perl gibt nicht die Fehlermeldung "Can't call
> method on an undefined value", wenn die Referenz definiert ist.

Hast recht, genaugenommen wurde die Funktion wohl 2mal ausgeführt. Einmal
mir gültigem hash, einmal ohne. Der Fehler liegt an anderer Stelle...

Das ganze ist in einen shop script, das im Indianer läuft. Ich habe mal
spasseshalber ein

die "anhalten"

nach der sessioninitialisierung in main eingegeben und bekomme die
Felermeldung jetzt zwei mal. Grmphf, was ist den das nu wieder?

Auch ein Ausgabe per warn erscheint zweimal im log?

ervin

Report this message

#4: Re: Database handle problem

Posted on 2008-01-15 00:35:50 by obw

Ervin Peters <ervin.peters@ervnet.de> wrote:
> Hast recht, genaugenommen wurde die Funktion wohl 2mal ausgeführt. Einmal
> mir gültigem hash, einmal ohne. Der Fehler liegt an anderer Stelle...
>
> Das ganze ist in einen shop script, das im Indianer läuft. Ich habe mal
> spasseshalber ein
>
> die "anhalten"
>
> nach der sessioninitialisierung in main eingegeben und bekomme die
> Felermeldung jetzt zwei mal. Grmphf, was ist den das nu wieder?
>
> Auch ein Ausgabe per warn erscheint zweimal im log?

Das ganze läuft nicht zufällig unter mod_perl? Stelle mal sicher,
dass dein Kram ein Singleton ist.

OBW

Report this message

#5: erledigt Re: Database handle problem

Posted on 2008-01-15 07:51:36 by Ervin Peters

Am Mon, 14 Jan 2008 23:35:50 +0000 schrieb Oliver B. Warzecha:

> Ervin Peters <ervin.peters@ervnet.de> wrote:
>> Hast recht, genaugenommen wurde die Funktion wohl 2mal ausgeführt.
>> Einmal mir gültigem hash, einmal ohne. Der Fehler liegt an anderer
>> Stelle...
>>
>> Das ganze ist in einen shop script, das im Indianer läuft. Ich habe mal
>> spasseshalber ein
>>
>> die "anhalten"
>>
>> nach der sessioninitialisierung in main eingegeben und bekomme die
>> Felermeldung jetzt zwei mal. Grmphf, was ist den das nu wieder?
>>
>> Auch ein Ausgabe per warn erscheint zweimal im log?
>
> Das ganze läuft nicht zufällig unter mod_perl? Stelle mal sicher, dass
> dein Kram ein Singleton ist.
>
> OBW

Nein, ich habe im tran an anderer Stelle noch eine Sessionbojekt erzeugt,
wo ich was anderes haben wollte und dort fehlten dann die passende
Aufrufparameter. Layer 9 problem.

ervin

Report this message