Perl -> mySQL
Hilker
- perl
0 Helmut Weber0 Hilker0 Struppi0 Helmut Weber0 Siechfred0 Hilker
Hi Forum,
versuche grade mit Perl auf eine mySQL Datenbank zuzugreifen...
Datenbank und Perl sowie sämtliche Treiber sind installiert...
auch mit der Datenbank kann mein script kommunizieren, aber als ich grade das logfile gecheckt hab, steht da 100fach:
Driver has not implemented the disconnect_all method. at D:/bin/perl/site/lib/DBI.pm line 565
END failed--call queue aborted.
hab erstmal versucht das einzuschränken und bin drauf gekommen, dass es wohl schon beim Login passiert also irgendwo dort ->
$data_source="DBI:mysql:database=".$dbasename.";host=localhost:3307";
$dbh = DBI -> connect ($data_source, $user, $pass);
Merkwürdig finde ich, dass alles einwandfrei zu funktionieren scheint... SELECTS, INSERTS, das Login, etc...
was soll das ^?
Hallo Hilker,
ich könnte mir vorstellen, dass die Fehlermeldung auftritt, wenn die Datenbank-Vebundung beendet wird. Wenn Du dies nicht explizit angibst, geschieht dies beim beenden deines Skriptes normalerweise automatisch.
Beende mal vor dem (logischen) Ende des Skriptes die Datenbank-Verbindung mit folgender Anweisung:
$dbh->disconnect();
Das würde auch erklären, warum CONNECT, SELECT, usw. funktioniert, weil die Fehlermeldung erst beim Beenden des Skriptes auftritt.
Herzliche Grüße aus Weinsberg
Helmut Weber
Hallo Hilker,
Hallo Helmut!
ich könnte mir vorstellen, dass die Fehlermeldung auftritt, wenn die Datenbank-Vebundung beendet wird. Wenn Du dies nicht explizit angibst, geschieht dies beim beenden deines Skriptes normalerweise automatisch.
Das dacht ich auch - darum hab ich das schon getestet, wie gesagt, hab ich das ja schon soweit eingeschränkt, dass es beim "connect" passiert. selbst wenn ich einfach NUR connecte ohne was anderes zu tun, tritt der fehler auf
und wenn ich unmittelbar nach der anfrage
my @result=();
$sth=$dbh->prepare("#sql query here#");
$sth->execute();
while (@ary = $sth->fetchrow_array()) {push(@result,@ary);}
return (@result);
$sth->finish ();
$dbh->disconnect() ;
wie hier beschrieben disconnecte, wird die errmsg ausgegeben.
Beende mal vor dem (logischen) Ende des Skriptes die Datenbank-Verbindung mit folgender Anweisung:
$dbh->disconnect();Das würde auch erklären, warum CONNECT, SELECT, usw. funktioniert, weil die Fehlermeldung erst beim Beenden des Skriptes auftritt.
Herzliche Grüße aus Weinsberg
Helmut Weber
mfG Hilker
Das dacht ich auch - darum hab ich das schon getestet, wie gesagt, hab ich das ja schon soweit eingeschränkt, dass es beim "connect" passiert. selbst wenn ich einfach NUR connecte ohne was anderes zu tun, tritt der fehler auf
Das Modul ruft immer am Ende (also im END Block) eine Funktion auf, die alle Verbindungen schließt. Bei meiner Version des DBI Moduls (meine ist 1.48) geschieht dies in Zeile 417.
Die Fehlermeldung deutet aber eher auf eine Fehlinstallation des DB Treiber hin. wie hast du diesen installiert? welche Version ist es?
Struppi.
Hallo Hilker,
Wenn alles richtig scheint, könnte ich nur noch vorschlagen, die Versionen der Module DBI und DBD::mysql zu prüfen und auf den neusten Stand zu bringen. Evtl. verwendest Du eine Konstellation der verschiedenen Software-Versionen, die für diese Fehlermeldung verantwortlich ist.
Herzliche Grüße aus Weinsberg
Helmut Weber
Tag Hilker.
Das dacht ich auch - darum hab ich das schon getestet, wie gesagt, hab ich das ja schon soweit eingeschränkt, dass es beim "connect" passiert. selbst wenn ich einfach NUR connecte ohne was anderes zu tun, tritt der fehler auf
Das ist IIRC ein Bug in DBI.pm, du solltest eine andere (neuere) Version verwenden (aktuell ist m.E. 1.50, siehe cpan.org).
Siechfred
Thanks Siechfried
Das ist IIRC ein Bug in DBI.pm, du solltest eine andere (neuere) Version verwenden (aktuell ist m.E. 1.50, siehe cpan.org).
Das war' 1000dank! nu klappts :)
Gruß, Markus