Hallo,
ich lasse jede Nacht eine Bereinigung der DB laufen über ein at
Internals:
COMMAND set myDbLog deleteOldDaysNbl 2
DEF *02:02:00 set myDbLog deleteOldDaysNbl 2
NAME DbLog_aufrauumen
NR 320
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 02:02:00
TIMESPEC 02:02:00
TRIGGERTIME 1547686920
TRIGGERTIME_FMT 2019-01-17 02:02:00
TYPE at
READINGS:
2019-01-16 02:03:01 state Next: 02:02:00
Attributes:
group Info
room Zentral
Jetzt hab ich im freezemone Log diese Meldung gesehen, da durch das at ein freeze verursacht wird :
2019.01.16 02:02:30.624 2: DbLog myDbLog -> Error table history - DBD::SQLite::st execute_array failed: database is locked [err was 5 now 2000000000]
executing 1 generated 1 errors at ./FHEM/93_DbLog.pm line 1661.
2019.01.16 02:02:30.625 4: DbLog myDbLog -> insert history rolled back
--- log skips 30.445 secs.
2019.01.16 02:03:01.070 5: DbLog myDbLog -> DbLog_Push Returncode: DBD::SQLite::st execute_array failed: database is locked [err was 5 now 2000000000]
executing 1 generated 1 errors at ./FHEM/93_DbLog.pm line 1661.
Was mache ich da falsch?
Danke
Du machst nichts falsch. Die Tabelle ist durch den Löschvorgang für das Logging gesperrt.
Lösungsvorschlag wäre eine Vorgehensweise wie hier
https://wiki.fhem.de/wiki/DbRep_-_Reporting_und_Management_von_DbLog-Datenbankinhalten#.28regelm.C3.A4.C3.9Figes.29_l.C3.B6schen_von_Datenbanks.C3.A4tzen
beschrieben (für die eigene Verwendung anpassen und Commandref lesen !).
Die DB in diesem Fall asynchron betreiben damit die während des Löschens auflaufenden Events nicht verloren gehen.
Grüße
Heiko