Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12537[/thread]

Aufruffehler bei DBIx::Dump

Leser: 2


<< >> 10 Einträge, 1 Seite
justme69
 2008-09-23 18:52
#114881 #114881
User since
2004-07-19
31 Artikel
BenutzerIn
[Homepage] [default_avatar]
Halllo zusammen,

ich habe bei meinem perl 5.8.8.820 die Module DBIx::Dump und Text::CSV_XS installiert - per ppm. Ich arbeite unter Windoof XP SP2

Ich möchte über DBI() und DBIx::Dump Daten per csv exportieren.

Beim Aufruf im Script bekomme ich folgende Fehlermeldung:

Code: (dl )
1
2
3
Can't load 'C:/Perl/site/lib/auto/Text/CSV_XS/CSV_XS.dll' for module Text::CSV_XS: load_file:Die angegebene Prozedur wurde nicht gefunden at C:/Perl/lib/DynaLoader.pm line 230. 
at C:/Perl/site/lib/DBIx/Dump.pm line 85
Compilation failed in require at C:/Perl/site/lib/DBIx/Dump.pm line 85.


Was ist da falsch gelaufen - kennt das jemand und weiß um die Behebung ?

Laut ppm ist DBIx::Dump in Version 0.04 und Text::CSV_XS in Version 0.54 installiert

Scriptausscchnitt:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!c:\perl\bin\perl.exe
#
# Wesentliche Parameter:
#
#
use strict;
use warnings;
use DBIx::Dump;
use DBI();

...

$port = 3306;
$dsn = "DBI:mysql:database=$database;host=$hostname;port=$port";
$dbh = DBI->connect($dsn, $user, $pwd, {'RaiseError' => 1, AutoCommit => 1}) or die "Connect fehlgeschlagen: $DBI::errstr";

$statement = "SELECT * FROM $tabelle ORDER BY SerNr ;";
$sth = $dbh->prepare($statement, { "mysql_use_result" => 1}) or die "Vorbereitung (prepare) fehlgeschlagen: $DBI::errstr";

$sth->execute() or die "SQL kann nicht ausgefuehrt werden: $DBI::errstr";

my $csv = DBIx::Dump->new('format' => 'csv', 'output' => $tabelle.".csv", 'sth' => $sth );
$csv->dump();


Danke für hilfreiche Hinweise ;-)
MfG
Stefan
justme69
 2008-09-23 20:40
#114887 #114887
User since
2004-07-19
31 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo,

das ist ein Witz oder ?

ich habe Text::CSV_XS von 0.54 auf 0.35 geändert - und schon funktionierts...

Die Version 0.54 ist scheinbar fehlerhaft... sch...

Wie kann ich zB bei der Installation über eine batch-Datei sicherstellen, das Version 0.35 genommen wird - selbst wenn 0.54 verfügbar wäre ?
MfG
Stefan
Gast Gast
 2008-10-25 13:29
#115738 #115738
Hallo,
ich muß nochmals nachfragen, da bisher keine Antwort kam:
justme69+2008-09-23 18:40:29--
Wie kann ich zB bei der Installation über eine batch-Datei sicherstellen, das Version 0.35 genommen wird - selbst wenn 0.54 verfügbar wäre ?


der anders ausgedrücckt - kann ich sicherstellen daß bei Modulinstallation eine bestimmte Version genommen wird - wenn ja wie ?.

Eine andere Frage - wie kann ich festsellen, welche Module auf einem Webserver installiert/verfügbar sind ?

Danke ;-)
GwenDragon
 2008-10-25 14:17
#115740 #115740
User since
2005-01-17
14774 Artikel
Admin1
[Homepage]
user image
ich habe mal in der Mottenkiste gekramt.
Mit sowas kannst du deine Version der installierten Module anzeigen (klappt allerdings nicht immer):
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/usr/bin/perl

$| = 1;

use strict;
use warnings;

#use CGI::Carp qw( fatalsToBrowser );

sub GetModules {
    my $dp = shift;
    my ( $dh, $dn );
    my @m;
    opendir( $dh, $dp );
    while ( $dn = readdir($dh) ) {
        next if $dn =~ /^\.\.?$/;    # falls ., oder ..
        my $p = "$dp/$dn";
        push @m, GetModules($p) if ( -d $p );
        push @m, $p if ( -f $p ) && ( $p =~ /\.(pm|cgi|pl)$/i );
    }
    closedir($dh);
    return @m;
}

my @moddirs = @INC;
my $ismodule;

print "Content-Type: text/plain\n\n" if $ENV{'REMOTE_ADDR'};  # Falls auf Server

foreach my $d (@moddirs) {
    $d =~ s#\\#/#g if $d =~ /\\/;

    foreach my $m ( GetModules($d) ) {
        if ( $ismodule = ( $m =~ /\.pm$/i ) ) {
            $m =~ s/\.pm$//i;
            $m =~ s/^$d//;
            $m =~ s/\//::/g;
            $m =~ s/^:://;
            $m =~ s/::$//;
        }
        print "$m ";
        if ($ismodule) {
            eval "require $m; print \$" . $m . '::VERSION;';

            #eval "require $m; print \&" . $m . '::Version();' if $@;
        }
        print "\n";
    }
}

1;

=pod

Zeigt alle Module im @INC an

=cut
justme69
 2008-10-25 14:52
#115741 #115741
User since
2004-07-19
31 Artikel
BenutzerIn
[Homepage] [default_avatar]
GwenDragon+2008-10-25 12:17:21--
ich habe mal in der Mottenkiste gekramt.
Mit sowas kannst du deine Version der installierten Module anzeigen (klappt allerdings nicht immer):

Hey, tausend Dank, werde ich ausprobieren.
Somit wäre geklärt, welche Module vorhanden sind.

Wie kann ich allerdings sicherstellen, das nur eine bestimmte Version installiert wird (zB mit Batch-Datei bei Windoof)...
MfG
Stefan
pq
 2008-10-25 15:22
#115742 #115742
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
hm, vorsicht, wenn Acme::Bleach unter den installierten modulen ist, ist dein skript futsch.
mit ExtUtils::Installed sollte das besser gehn (das ignoriert jedoch per apt-get o.ä. installierte
module).
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
pq
 2008-10-25 15:24
#115743 #115743
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ob batch-datei oder nicht, kommt halt drauf an, wie du das modul installierst.
mit CPAN kann man eine bestimmte version installieren, indem man das tarfile direkt
angibt. wenn die gewünschte version nur noch auf backpan vorhanden ist, muss man es
manuell installieren.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
pq
 2008-10-25 15:28
#115744 #115744
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
noch ein tip: stell mal beim ausführen des skripts die sprache auf englisch (unter linux mache
ich dann immer LANG=C perl skript.pl), dann kriegst du eine englische fehlermeldung, nach
der kannst du besser suchen.
hast du es schon mit der version 0.57 probiert? wenn der fehler immer noch kommt,
schreib doch einen bugreport.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
justme69
 2008-10-25 17:08
#115747 #115747
User since
2004-07-19
31 Artikel
BenutzerIn
[Homepage] [default_avatar]
Danke für die Tips...

ich möchte meine Skripte an andere weitergeben, die keinen Plan von Perl bzw. Programmierung haben. Dh die sollen die Programme einfach nutzen können.

Dazu gibts von mir ne Batchdatei, um zusätzliche Perl-Module installieren zu können. Dh ich kann schlecht den Leuten auch noch erklären, wie sie Module selbt über CPAN oö. nachinstallieren können.
Batch-Datei deswegen, da alle auf Windoof arbeiten (ich auch)

In der Batch-Datei installiere ich erst 2 zusätzliche Reposiitories und dann jedes Modul über 'call ppm install modulname'

Wie kann ich da Versionen festlegen - so das sie automatisch installiert werden - ohne Abfrage, ob tatsächlich das Alte genommen werden soll - oder Hinweise das neuere existieren ?

Nachtrag: die 057 werde ich mir noch anschauen, danke für den Hinweis ;-)
MfG
Stefan
Struppi
 2008-10-26 10:07
#115752 #115752
User since
2006-02-17
628 Artikel
BenutzerIn
[Homepage]
user image
Mich würde wundern wenn das gehen würde. Zumindest nicht mit einem offiziellen Programm, wer möchte schon gerne das ein Skript die Module wieder auf einen veralteten Stand bringt?
Die Modulversionen, werden ja nicht parallel installiert. Die Fehlermeldung ganz oben deutet auch eher auf eine fehlerhafte Installation bei dir hin.

Ich hab mir gerad mal Text::CSV_XS mit ppm installiert und dort ist die aktuelle Version 0.35, woher kommt bei dir die version .54? Hast du die evtl. von Hand installiert?

Wie auch immer, der Fehler liegt bei deinem System nicht an der Installation mit ppm
<< >> 10 Einträge, 1 Seite



View all threads created 2008-09-23 18:52.