Hi,
ich habe gerade gesehen, dass ich seit dem 26.03 (Sonntag) Logmeldungen erhalte, dass das datetime Format ungültig ist:
executing 72 generated 7 errors [for Statement "INSERT INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (?,?,?,?,?,?,?)"] at ./FHEM/93_DbLog.pm line 2998.
2023.03.26 01:00:02 2: DbLog LoggingDB - Error table history - DBD::mysql::st execute_array failed: Incorrect datetime value: '2023-03-26 01:00:01' for column `fhem`.`history`.`TIMESTAMP` at row 1 [err was 1292 now 2000000000]
Seit dem laufen auch alle Meldungen in den Cache und nicht mehr in die Datenbank.
Folgende DB Log Version ist im Einsatz:
93_DbLog.pm 27111 2023-01-23 19:06:28Z DS_Starter
Ich hatte zuerst die Zeitumstellung im Verdacht, aber die ist ja nicht um 1 Uhr gewesen.
Grüße Sidey
Grüße Sidey
Zeitumstellung glaube ich nicht. Kann und konnte bei mir keine Probleme damit feststellen und ich denke dann gäbe es viel mehr Meldungen dieser Art.
Das datetime value: '2023-03-26 01:00:01' sieht aber auch ok aus, es sei denn das "Leerzeichen" ist keins (etwas weit hergeholt).
Setze erstmal folgende Attr:
insertMode 1
commitMode basic_ta:off
Damit sollten die Daten (außer die Problemsätze) in die DB laufen.
Dann muß man mal sehen ...
Der in der Fehlermeldung zitierte Error 1292 sagt mir irgendwas, das muss aber einige Jahre her sein, dass ich über das Problem gestolpert bin. Damals wollte die Datenbank den Timestamp als string partout nicht in ein Datenbankfeld vom Type timestamp übernehmen wollte. Erst nach einer Konvertierung beim Insert war dann Ruhe.
Aber warum das hier jetzt "plötzlich" auftritt, erschließt sich mir nicht. Hattest Du auf Betriebssystemebene ein Update Deiner mysql Installation?
Habe gerade etwas gegoogelt.
Die Quellen die ich bisher gelesen habe deuten darauf hin dass die DB z.B. "YYYY-DD-MM" erwartet, aber "YYYY-MM-DD" vom Programm geliefert wird.
Der Hinweis von betateilchen scheint mir auch eine heiße Spur zu sein ...
Das mit dem Format hatte ich auch gefunden. Sicherer wäre es wohl, das ganze als String einzulesen und als Date, vermutlich eine Zahl, zu übergeben:
https://sebhastian.com/mysql-incorrect-datetime-value/
Der Cache ist durch mein experimentieren leider vor dem Speichern flöten gegangen, aus diesem Grund habe ich den problematischen Datensatz nicht mehr, aber ich denke es war der 1. aus dem Log.
Im Moment kommen keine Fehler mehr. FHEM habe ich nicht aktualisiert, mein Datenbank Container wurde auch am 2023-03-05 erzeugt, also lange vor dem Fehler.
Grüße Sidey