DBLOG mit SQLite: Disconnect bei Darstellung von SVG

Begonnen von abc2006, 20 Januar 2016, 14:12:03

Vorheriges Thema - Nächstes Thema

abc2006

Ich benutze Fhem 5.7 auf einem Intel Atom mit SQLite als Log-Datenbank. Beim Aufrufen von Seiten mit SVG's erscheinen folgende Fehlermeldungen im Log:
2016.01.20 13:47:45.667 3: Connecting to database SQLite:dbname=/opt/fhem/fhem_sqlite.db with user
2016.01.20 13:47:45.669 3: Connection to db SQLite:dbname=/opt/fhem/fhem_sqlite.db established for pid 25417
2016.01.20 13:47:45.675 2: DbLog: Failed to insert new readings into database: DBD::SQLite::st execute failed: attempt to execute on inactive database handle at ./FHEM/93_DbLog.pm line 492.

2016.01.20 13:47:50.442 3: Connecting to database SQLite:dbname=/opt/fhem/fhem_sqlite.db with user
2016.01.20 13:47:50.445 3: Connection to db SQLite:dbname=/opt/fhem/fhem_sqlite.db established for pid 25418
2016.01.20 13:47:50.448 2: DbLog: Failed to insert new readings into database: DBD::SQLite::st execute failed: attempt to execute on inactive database handle at ./FHEM/93_DbLog.pm line 492.


Die GPLOT-Datei sieht wie folgt aus:

# Created by FHEM/98_SVG.pm, 2016-01-20 11:05:45
set terminal png transparent size <SIZE> crop
set output '<OUT>.png'
set xdata time
set timefmt "%Y-%m-%d_%H:%M:%S"
set xlabel " "
set title '<TL>'
set ytics
set y2tics
set grid
set ylabel "Humidity"
set y2label "Temperature"

#logdb S300TH:temperature
#logdb Heizung_VL_Soll:state
#logdb S300TH:humidity
#logdb DS18B20_VorlaufHK:temperature

plot "<IN>" using 1:2 axes x1y2 title 'Aussentemperatur' ls l2 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Vorlauftemperatur Soll' ls l0 lw 1 with lines,\
     "<IN>" using 1:2 axes x1y1 title 'Luftfeuchtigkeit' ls l1fill_stripe lw 1 with lines,\
     "<IN>" using 1:2 axes x1y2 title 'Vorlauftemperatur Ist' ls l3 lw 1 with lines


Die definition der logdb lautet

DEF   ./db_sqlite.conf .*:.*
dbconn      SQLite:dbname=/opt/fhem/fhem_sqlite.db
state          connected         2016-01-20 14:06:12


Die sqlite.conf hat folgenden Inhalt:

#
# database configuration file
#
#
## for MySQL
################################################################
#%dbconfig= (
# connection => "mysql:database=fhem;host=localhost;port=3306",
# user => "fhemuser",
# password => "tXeilqbF",
#);
################################################################
#
## for PostgreSQL
################################################################
#%dbconfig= (
#        connection => "Pg:database=fhem;host=localhost",
#        user => "fhemuser",
#        password => "fhempassword"
#);
################################################################
#
## for SQLite (username and password stay empty for SQLite)
################################################################
%dbconfig= (
        connection => "SQLite:dbname=/opt/fhem/fhem_sqlite.db",
        user => "",
        password => ""
);
################################################################


Update habe ich gemacht, allerdings waren (zumindest im letzten) keine Updates der 93_DbLog.pm drin ..

Die Datenbank sollte folgende Struktur haben ( aus der Demo-Datei, ich habe noch nicht rausgefunden, wie ich bei SQLite die Struktur angezeigt bekomme, habe mehr Erfahrung mit mysql..

CREATE TABLE current (TIMESTAMP TIMESTAMP, DEVICE varchar(32), TYPE varchar(32), EVENT varchar(512), READING varchar(32), VALUE varchar(32), UNIT varchar(32));
CREATE TABLE history (TIMESTAMP TIMESTAMP, DEVICE varchar(32), TYPE varchar(32), EVENT varchar(512), READING varchar(32), VALUE varchar(32), UNIT varchar(32));
CREATE INDEX Search_Idx ON `history` (DEVICE, READING, TIMESTAMP);



und last but not least ist mir aufgefallen, dass die Tabelle 'current' anscheinend komplett leer ist ... habe mich aber zugegebenermaßen noch nicht damit befasst, wo welche Werte drinstehen sollten...
Die Tabelle 'history' ist und wird befüllt, und auch die SVG's sind *eigentlich* aktuell...

Grüße und Danke
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

rudolfkoenig

Funktioniert es wieder, wenn man das FHEMWEB plotfork Attribut loescht?

abc2006

#2
*patsch*  :-[

da hätte ich natürlich selbst drauf kommen können müssen.. sorry!
Ich war davon ausgegangen, dass nach der anderen Diskussion http://forum.fhem.de/index.php/topic,46512.msg382507.html#msg382507 plotfork nur bei MySQL kritisch ist, weswegen ich (unter anderem) auf SQLite gewechselt habe...
Um die Frage zu beantworten: die Fehlermeldungen sind dann verschwunden, ja.

Verstehe ich das eigentlich richtig, dass bei der Erstellung von SVG's (plotfork) nur aus der Datenbank gelesen wird?
Warum erzeugt das Setzen des Attributes dann einen Schreibzugriffs-Fehler? Failed to [u][b]insert[/b][/u] new readings into database

Die Tabelle current ist allerdings immer noch leer ..

Danke!
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

rudolfkoenig

Mit plotfork wird fuer jede SVG ein separates Prozess erzeugt, damit man die vielen Prozessoren des Servers gut auslasten kann. Nachdem die SVG berechnet wurde, werden diese Prozesse beendet. Beim Beenden eines Prozesses macht die DBD Schicht die Datenbankverbindung zu. Wir versuchen zwar in fhemFork() mit InactiveDestroy das zu vermeiden, es scheint aber nicht zu funktionieren. Das Problem mag auch leicht anders liegen, da ich aber DbLog weder betreue, noch verwende, habe ich es nicht genau im Kopf.