Hey...
thx für die sehr schnelle Antwort... Habs natürlich gleich ausprobiert...
Hat leider nicht so funktioniert wie es sollte; Deswegen mehr informationen über das Script:
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# Knoten
if (($_[0]==0) || ($_[0]==1)) {
%hKnoten = (); # Hash leeren
# Tabelle Knoten abfragen
$sql = "SELECT Knoten.KID, Knoten.Name from Knoten;";
$sth = $dbh->prepare($sql); Fehler("Fehler Hash Knoten: $DBI::errstr", 0) if $DBI::err; # SQL-Befehl zur Datenbank schicken
$sth->execute(); Fehler("Fehler Hash Knoten: $DBI::errstr", 0) if $DBI::err; # SQL-Befehl ausführen
# Ergebnis abholen und in Datei ausgeben
while (@fields = $sth->fetchrow_array()) {
# Hash erstellen
$hKnoten{"$fields[1]"}=$fields[0];
}
$sth->finish();
}
# Priority
if (($_[0]==0) || ($_[0]==2)) {
%hPriority = (); # Hash leeren
# Tabelle Priority abfragen
$sql = "SELECT Priority.PID, Priority.Priority from Priority;";
$sth = $dbh->prepare($sql); Fehler("Fehler Hash Priority: $DBI::errstr", 0) if $DBI::err; # SQL-Befehl zur Datenbank schicken
$sth->execute(); Fehler("Fehler Hash Priority: $DBI::errstr", 0) if $DBI::err; # SQL-Befehl ausführen
# Ergebnis abholen und in Datei ausgeben
while (@fields = $sth->fetchrow_array()) {
# Hash erstellen
$hPriority{"$fields[1]"}=$fields[0];
}
$sth->finish();
}
# Fehler
if (($_[0]==0) || ($_[0]==3)) {
%hFehler = (); # Hash leeren
# Tabelle Fehler abfragen
$sql = "SELECT Fehler.FID, Fehler.Fehler from Fehler;";
$sth = $dbh->prepare($sql); Fehler("Fehler Hash Fehler: $DBI::errstr", 0) if $DBI::err; # SQL-Befehl zur Datenbank schicken
$sth->execute(); Fehler("Fehler Hash Fehler: $DBI::errstr", 0) if $DBI::err; # SQL-Befehl ausführen
# Ergebnis abholen und in Datei ausgeben
while (@fields = $sth->fetchrow_array()) {
# Hash erstellen
$hFehler{"$fields[1]"}=$fields[0];
}
$sth->finish();
}
# Karten
if (($_[0]==0) || ($_[0]==4)) {
%hKarten = (); # Hash leeren
# Tabelle Karten abfragen
$sql = "SELECT Karten.KTyp, Karten.Typ from Karten;";
$sth = $dbh->prepare($sql); Fehler("Fehler Hash Karten: $DBI::errstr", 0) if $DBI::err; # SQL-Befehl zur Datenbank schicken
$sth->execute(); Fehler("Fehler Hash Karten: $DBI::errstr", 0) if $DBI::err; # SQL-Befehl ausführen
# Ergebnis abholen und in Datei ausgeben
while (@fields = $sth->fetchrow_array()) {
# Hash erstellen
$hKarten{"$fields[1]"}=$fields[0];
}
$sth->finish();
}
Diese Funktionen sind die Hauptfunktionen für die anderen Teilfunktionen(so denk ich zumindest das es funktioniert..):
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
sub Knoten_eintragen {
print "Neuer Knoten $_[0] \n" if defined $opt_v;
$dbh->do("insert into Knoten(Name, TID, new) values ('" . $_[0] . "', 0, 1);"); Fehler("Fehler Neuer Knoten: $DBI::errstr", 0) if $DBI::err;
}
sub Priority_eintragen {
print "Neue Priority $_[0] \n" if defined $opt_v;
$dbh->do("insert into Priority(Priority) values ('" . $_[0] . "');"); Fehler("Fehler Neue Priorität: $DBI::errstr", 0) if $DBI::err;
}
sub Fehler_eintragen {
print "Neuer Fehler $_[0] \n" if defined $opt_v;
$dbh->do("insert into Fehler(Fehler) values (?);", undef, $_[0]); Fehler("Fehler Neuer Fehler: $DBI::errstr", 0) if $DBI::err;
}
#sub Fehler_eintragen {
# print "Neuer Fehler $_[0] \n" if defined $opt_v;
# $dbh->do("insert into Fehler(Fehler) values ('" . $_[0] . "');"); Fehler("Fehler Neuer Fehler: $DBI::errstr", 0) if $DBI::err;
#}
sub Karte_eintragen {
print "Neuer Kartentyp $_[0] \n" if defined $opt_v;
$dbh->do("insert into Karten(Typ) values ('" . $_[0] . "');"); Fehler("Fehler Neuer Kartentyp: $DBI::errstr", 0) if $DBI::err;
}
sub Datum_eintragen {
print "Neues Datum $_[0] \n" if defined $opt_v;
$dbh->do("insert into Datum(Datum) values ('" . $_[0] . "');"); Fehler("Fehler Neues Datum: $DBI::errstr", 0) if $DBI::err;
}
wenn ich den original-code nehme(sprich das auskommentierte benutze) bekomme ich so eine Fehlermeldung:
Neuer Fehler Can't find stats collector
DBD::mysql::db do failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 't find stats collector')' at line 1 at /database/scripts/Alarme/Alarme_Einlesen_lab.perl line 435.
/database/scripts/Alarme/Alarme_Einlesen_lab.perl line 435 ist folgende:
$dbh->do("insert into Fehler(Fehler) values ('" . $_[0] . "');"); Fehler("Fehler Neuer Fehler: $DBI::errstr", 0) if $DBI::err;
Wenn ich deine Lösung einfüge kommt folgende Fehlermeldung:
Neue Priority Slot Sync Loss
DBD::mysql::db do failed: Duplicate entry '255' for key 1 at /database/scripts/Alarme/Alarme_Einlesen_lab.perl line 430.
Fehler Neue Priorität: Duplicate entry '255' for key 1
/database/scripts/Alarme/Alarme_Einlesen_lab.perl line 430 ist folgende:
$dbh->do("insert into Priority(Priority) values ('" . $_[0] . "');"); Fehler("Fehler Neue Priorität: $DBI::errstr", 0) if $DBI::err;
war das verständlich und habt ihr ne idee warum des net geht, bzw. was man sonst noch machen kann??
jojo