DBI Zugriff

Alles, was Perl betrifft, kann hier besprochen werden.

DBI Zugriff

Postby kegiro » 05. May 2005 23:31

Hallo allerseits,

ich habe als Perl Newbie ein nerviges Problem mit dem Datenbankzugriff:

Meine Skripte laufen im modperl Ordner einwandfrei, und zwar als reine Konsolenskripte (starte sie unter DOS). Nun möchte ich Datenbankzugriffe einbauen. Komisch nur, die Testskripte per Webformular funktionieren auch (mit use DBI), nur bei den Konsolenanwendungen wird es mit "use DBI" nicht kompiliert bzw findet das im inc Pfad nicht, wenn ich es weglasse wird connect() als Funktion nicht gefunden ... An Pfad etc habe ich mich noch nicht gewagt, die perl.conf gab auch nicht so viel her. Das ganze läuft unter w2k,

Besten Dank,
Gruss
Florian
kegiro
 
Posts: 7
Joined: 05. May 2005 22:32

Postby Wiedmann » 05. May 2005 23:35

Gibts wirklich so wenig Fehlermeldungen bei dir (, auch nicht wenn du Ausgabe extra aktivierst)?

Möglicherweise ist die "libmysql.dll" nicht im PATH.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby kegiro » 06. May 2005 15:30

Hallo Wiedmann,

Gibts wirklich so wenig Fehlermeldungen bei dir (, auch nicht wenn du Ausgabe extra aktivierst)?


ich habe mal
Code: Select all
use CGI::Carp qw(fatalsToBrowser);
in den Code gesetzt, die Fehlermeldungen in DOS bleiben aber gleich - meintest Du das mit Extra Ausgabe ? Das Fehlerlog bleibt leer ...
Fehlermeldung im Wortlaut : (Code ist auszugsweise unten angehängt)

Code: Select all
Can't locate CGI/Carp.pm in @INC at C:\PROGRA~2\APACHE~1\xampp\htdocs\modperl\nb\db_test.pl line 2
BEGIN failed--compilation aborted at C:\PROGRA~2\APACHE~1\xampp\htdocs\modperl\nb\db_test.pl line 2


Wenn ich "use DBI;" weglasse, dann meckert Perl folgendes:

Code: Select all
Can't locate object method "connect" via package "DBI" at C:\PROGRA~2\APACHE~1\xampp\htdocs\modperl\nb\db_test.pl line 12




Möglicherweise ist die "libmysql.dll" nicht im PATH.


Welcher Path ist hiermit gemeint? Wenn ich das hier in den Skriptanfang schreibe, reicht das ?

Code: Select all
BEGIN
      {
       $path = 'c:\Programme\apachefriends\xampp\apache\bin\libmySQL.dll';
        push(@INC,$path);
       }


oder ist der PATH unter den Umgebungsvariablen gemeint. Und welche der dll Dateien nehm ich dann, es gibt derer vier in XAMPP.

Hier der Quelltext:

Code: Select all

use CGI::Carp qw(fatalsToBrowser);
use DBI;

my $DB_NAME = "test";
my $DB_DSN = "DBI:mysql:database=$DB_NAME";
my $DB_USER = "root";
my $DB_PASSWD = "";

my @tabelle;

my $dbh = DBI->connect($DB_DSN, $DB_USER, $DB_PASSWD) or die "Fehler bei Datenbankverbindung: $!";

# *************** Select sequence **************************
$table = "sequence";
$query{$table} = "SELECT * FROM sequence ORDER BY seq_id";
my $Abfrage_seq = $dbh->prepare($query{$table});
$Abfrage_seq->execute();
push(@tabelle,$table);
$Abfrage{$table} = $Abfrage_seq;

[ ...]

$dbh->disconnect;


print "Content-Type: text/html\n\n";
print '<html>';
print '<head>';
[ ... Ausgabe für Browser, im DOS Skript entfernt...]
print "</body>";
print "</html>";
kegiro
 
Posts: 7
Joined: 05. May 2005 22:32

Postby kegiro » 19. May 2005 15:54

Moin,

inzwischen habe ich mal den Pfad unter den Systemvariablen ergänzt um die folgenden:
c:\programme\apachefriends\xampp\perl\lib
c:\programme\apachefriends\xampp\perl\bin

Die libmysql.dll habe ich ebenfalls in den Pfad gepackt:

c:\programme\apachefriends\xampp\apache\bin\libmySQL.dll
c:\programme\apachefriends\xampp\mysql\bin\libmySQL.dll

erstmal alle weil ich nicht wußte welche denn nun gebraucht werden.

Leider geht der DBI Zugriff über Konsolenskript immer noch nicht ... :(

Komme grad irgendwie nicht weiter, weiß jemand Rat?
Ich habe das Gefühl, daß es mal wieder ein ganz einfacher Fehler ist ...

PS: Das PErl Errorlog gibt leider gar nichts her...
kegiro
 
Posts: 7
Joined: 05. May 2005 22:32

Postby kegiro » 19. May 2005 16:51

OK
kleines Update ...sorry das es etwas verworren ist :

Es klappt mittlerweile ....;) Aber ich bekomme immer noch Fehlermeldungen:

1) Also: Ich hatte noch eine ältere Perlversion lokal unter c installiert, ahem, anscheinend hatte mein Konsolenskript diese verwendet, und die Webskripte das modperl... Ich habe den alten Perlordner einfach mal brutalerweise entfernt, und dann kam ein modaler Windowsdialog, der mich nach dem auszuführenden Perl.exe befragte, und da habe ich dann den xampp Pfad eingeklickt....

Seitdem funktioniert das Skript, mit dem ich Daten eintrage

2) Die schönen Fehlermeldungen, die ich nicht einordnen kann:

Code: Select all
 File 'C:\mysql\\sharecharactersets\?.conf' not found (Errcode: 2)
Character set '#48' is not a compiled character set and is not specified in the 'C:\mysql\\share\charsets\Index' file
DBI::db=HASH(0x1c0e510)->disconnect invalidates 1 active statement handle (either destroy statement handles or call finsish on them before disconnecting) at C:\Program....\DB_TES~2.PL


Fehlerlog war unberührt...

Naja, jedenfalls habe ich mal andere Fehlermeldungen ...;)

Danke und Gruss
kegiro
 
Posts: 7
Joined: 05. May 2005 22:32


Return to Perl

Who is online

Users browsing this forum: No registered users and 7 guests