Hilker: Perl -> mySQL

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 ^?

  1. 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

    --
    -------------------------------------------
    Mode ist eine Variable, Stil eine Konstante
    1. 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

      1. 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.

      2. 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

        --
        -------------------------------------------
        Mode ist eine Variable, Stil eine Konstante
      3. 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

        1. 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