Hallo erstmal,
ich habe folgendes Problem:
in einer MySQL-Datenbank werden Messwerte mit Zeit, einer Modul-ID und Kanal-ID eingetragen. Das klappt eigentlich auch prima, nur manchmal kommt der SQL-Befehl nur Bruchstückhaft bei der datenbank an.
Es kommen immer alle Werte der letzten 15 Minuten von mehereren Kanälen an, die auch Nullen enthalten. Um keine Nullwerte abzuspeichern, wird der gesamte String ein wenig kompliziert zusammen gebaut. Wie gesagt, das funktioniert auch alles
Folgendermaßen wird der SQL-Befehl zusammengebaut:
Die Daten werden dann ganz normal eingetragen:
In der MySQL-Logdatei sieht das ganze dann auch so aus:
Manchmal passiert aber folgendes:
Ich weiß leider nicht, woran das liegen könnte. Oder ich sehe den Wald vor lauter Bäumen nicht.
Vielleicht hat ja jemand eine Idee.
Gruß Jens
ich habe folgendes Problem:
in einer MySQL-Datenbank werden Messwerte mit Zeit, einer Modul-ID und Kanal-ID eingetragen. Das klappt eigentlich auch prima, nur manchmal kommt der SQL-Befehl nur Bruchstückhaft bei der datenbank an.
Es kommen immer alle Werte der letzten 15 Minuten von mehereren Kanälen an, die auch Nullen enthalten. Um keine Nullwerte abzuspeichern, wird der gesamte String ein wenig kompliziert zusammen gebaut. Wie gesagt, das funktioniert auch alles
Folgendermaßen wird der SQL-Befehl zusammengebaut:
Code:
String sql ="INSERT INTO "+anlagendaten.datentabelle+" (zeit,mid,kid,wert) VALUES ";
[...]
if (wert != 0) {
sql=sql+"('"+time+"',"+mid+","+kid+","+wert+")";
}
if ((h==(((int)(15/anlagendaten.speicherintervall))-1)) && (i==(anlagendaten.kanalanzahl-1))) {
if (wert==0){
index = sql.lastIndexOf( ',');
sql= sql.substring(0, index);
}
sql=sql+";";
}
else {
if (wert != 0){
sql=sql+",";
}
}
tmpZaehler++;
Die Daten werden dann ganz normal eingetragen:
Code:
try {
//System.out.println("Verbinde mit: logdata"+ServerTools.getYear());
Connection cjdbc2 = DatabaseTools.connectDatabase("logdata"+ServerTools.getYear());
PreparedStatement pstmt2 = cjdbc2.prepareStatement(sql);
pstmt2.execute();
cjdbc.close();
cjdbc2.close();
//System.out.println("Dateneintrag fertig");
} catch (Exception sqlex) {
ServerDatenWriteLogger.error("Fehler: Anlage: "+anlagendaten.seriennummer);
ServerDatenWriteLogger.error("Datenbankfehler: " + sqlex.getMessage());
sqlex.printStackTrace();
}
69560 Prepare [1] INSERT INTO t7 (zeit,mid,kid,wert) VALUES ('06.06.21 07:45',11,54,280),('06.06.21 07:45',11,55,275),('06.06.21 07:45',11,56,285),('06.06.21 07:45',11,57,290),('06.06.21 07:45',11,58,285),('06.06.21 07:45',11,59,295),('06.06.21 07:45',11,60,285),('06.06.21 07:45',11,61,270),('06.06.21 07:45',11,62,305),('06.06.21 07:45',11,63,265),('06.06.21 07:45',11,404,459),('06.06.21 07:45',11,405,-96),('06.06.21 07:45',12,64,250),('06.06.21 07:45',12,65,255),('06.06.21 07:45',12,66,255),('06.06.21 07:45',12,67,255),('06.06.21 07:45',12,68,260),('06.06.21 07:45',12,69,220),('06.06.21 07:45',12,70,245),('06.06.21 07:45',12,71,245),('06.06.21 07:45',12,72,250),('06.06.21 07:45',12,73,260);
69560 Execute [1] INSERT INTO t7 (zeit,mid,kid,wert) VALUES ('06.06.21 07:45',11,54,280),('06.06.21 07:45',11,55,275),('06.06.21 07:45',11,56,285),('06.06.21 07:45',11,57,290),('06.06.21 07:45',11,58,285),('06.06.21 07:45',11,59,295),('06.06.21 07:45',11,60,285),('06.06.21 07:45',11,61,270),('06.06.21 07:45',11,62,305),('06.06.21 07:45',11,63,265),('06.06.21 07:45',11,404,459),('06.06.21 07:45',11,405,-96),('06.06.21 07:45',12,64,250),('06.06.21 07:45',12,65,255),('06.06.21 07:45',12,66,255),('06.06.21 07:45',12,67,255),('06.06.21 07:45',12,68,260),('06.06.21 07:45',12,69,220),('06.06.21 07:45',12,70,245),('06.06.21 07:45',12,71,245),('06.06.21 07:45',12,72,250),('06.06.21 07:45',12,73,260)
69559 Quit
Manchmal passiert aber folgendes:
58712 Prepare [1] INSERT INTO t5 (zeit,mid,kid;
58712 Query INSERT INTO t5 (zeit,mid,kid
Ich weiß leider nicht, woran das liegen könnte. Oder ich sehe den Wald vor lauter Bäumen nicht.
Vielleicht hat ja jemand eine Idee.
Gruß Jens