FHEM Forum

FHEM => Sonstiges => Thema gestartet von: Hermann20 am 09 Oktober 2016, 18:48:55

Titel: Modul DbRep: Problem mit defEntries
Beitrag von: Hermann20 am 09 Oktober 2016, 18:48:55
Hallo,

ich verwende DbRep zum Datenexport in csv-Files. (Die Auswahl mittels device, timestamp_begin, timestamp_end, ... habe ich verstanden und es funktioniert.)

Nun versuche ich bisher leider erfolglos, alte oder überflüssige Daten zu löschen.

Attibute:
   allowDeletion 1
   expimpfile /media/usbssd/Db.csv
   reading    pressure-nn
   room       CUL
   webCmd     exportToFile


set myDbRep countEntries liefert:
1970-01-01__pressure-nn__COUNT__all_between_timestamps 413  2016-10-09 18:31:28
state                                                  done 2016-10-09 18:31:28

D.h. es existieren 413 Readings "pressure-nn".

set myDbRep delEntries liefert:
state  running   2016-10-09 18:36:13
Hängt, da passiert nichts mehr.

Und im LOG-File ist folgende Fehlermeldung:
DBD::SQLite::db prepare failed: ORDER BY without LIMIT on DELETE at ./FHEM/93_DbRep.pm line 2000.

Ich habe das Löschen auch mit anderen Parametern (Zeit, anderes devices oder reading) probiert, AllowDeletion steht auf 1, es funktioniert trotzdem nicht.

Was habe ich nicht richtig verstanden oder was mache ich falsch?

Vielen Dank im voraus,
Gruß Hermann
Titel: Antw:Modul DbRep: Problem mit defEntries
Beitrag von: DS_Starter am 09 Oktober 2016, 19:16:37
Hallo Hermann,

da kannst du nichts dafür, das war mein Fehler. Hab ich gleich korrigiert.
Nimm mal bitte die V4.1.3 aus diesem Thread:

https://forum.fhem.de/index.php/topic,53584.0.html

Und gib bitte Bescheid ob nun bei dir alles klappt.

Grüße
Heiko
Titel: Antw:Modul DbRep: Problem mit defEntries
Beitrag von: Hermann20 am 09 Oktober 2016, 20:43:32
Hallo Heiko,

das ging ja schneller als der Blitz. Das Löschen funktioniert nun, ich habe mittels Selektion device, reading und/oder Zeit den angesammelten Müll aus meiner Datenbank entfernen können. Herzlichen Dank für die schnelle Hilfe.

Darf ich noch eine weitere Frage anhängen?
Gibt es eine Möglichkeit etwas wie den Befehl VACUUM aus FHEM heraus auszuführen?
Erst dieser Befehl auf der SQLite Kommandozeile verkleinert die Datei wirklich. (Habe nicht wirklich Ahnung von SQLite, im aktuellen Fall wurde das File halbiert.)

Gruß
Hermann
Titel: Antw:Modul DbRep: Problem mit defEntries
Beitrag von: DS_Starter am 09 Oktober 2016, 21:01:08
Hallo Hermann,

prima dass es jetzt funktioniert. Wie das manchmal so ist, war es ein cut & paste-Fehler. Ist mir sofort wie Schuppen von den Augen gefallen als ich deine Meldung sah  ;)

Ein großer Kenner von SQLite bin ich auch nicht, ich setze MySQL ein, dort gibt es kein VACUUM.
Aber um deine Frage zu beantworten .... ich denke dass es funktionieren würde den Befehl abzusetzen. Soviel ich aber weiß, wird FHEM bei der Ausführung des VACUUM-Befehls blockieren da die Datenbank, solange der Befehl läuft, keine Verarbeitung zuläßt.
DbLog ist nicht nonblocking konzipiert und wird seine Daten nicht losbekommen wenn VACUUM läuft.

Also ich vermute ... ja man könnte es machen. Aber ob das sinnvoll ist ??

Allerdings probiert und getestet habe ich so etwas bisher nicht.
Probier doch mal wie FHEM sich verhält solange der VACUUM läuft !  Wäre auch für mich interessant zu wissen.
Ich habe ein kleine SQLIte für Testzwecke (für die Entwicklung des Moduls), aber da ist nicht viel drin.

Grüße
Heiko
Titel: Antw:Modul DbRep: Problem mit defEntries
Beitrag von: Hermann20 am 09 Oktober 2016, 22:26:16
Hallo Heiko,

ich denke, das mit dem VACUUM macht keinen Sinn. Solange VACCUM läuft sollten keine Zugriffe erfolgen, das schreit ja nach Ärger. Probieren geht leider nicht mehr, die Datenbank ist jetzt klein. Zunächst hatte ich mich halt gewundert, dass die Datei trotz löschen nicht kleiner wurde und war auf VACUUM gestoßen.

Gruß
Hermann