FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Tommy82 am 16 Januar 2019, 06:03:25

Titel: DBLog meldung
Beitrag von: Tommy82 am 16 Januar 2019, 06:03:25
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
Titel: Antw:DBLog meldung
Beitrag von: DS_Starter am 16 Januar 2019, 08:24:23
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