[gelöst] current Tabelle lässt sich nicht anlegen bei SQLite

Begonnen von _fhemuser_, 19 Januar 2020, 09:51:25

Vorheriges Thema - Nächstes Thema

_fhemuser_

Hallo,

nachdem sich meine SSD am Raspberry 3 aufgelöst hat, habe ich das System komplett neu aufgesetzt mit Raspberry Buster und den neuesten fhem Version.

Da auf dem alten System alles in eine SQL Datenbank geschrieben wurde, möchte ich das auch bei dem neuen Sytem machen, da ich unter anderem fast alle fhem Dateien sichern konnte.

Aber beim Anlegen der Tabellen in der Datenbank tritt ein Fehler auf.

Vorgegangen bin ich nach dieser Anleitung: https://wiki.fhem.de/wiki/DbLog

Sobald ich den SQL Befehl:
CREATE TABLE `current` (`TIMESTAMP` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,`DEVICE` varchar(64) DEFAULT NULL,`TYPE` varchar(64) DEFAULT NULL, `EVENT` varchar(512) DEFAULT NULL, `READING` varchar(64) DEFAULT NULL, `VALUE` varchar(255) DEFAULT NULL, `UNIT` varchar(32) DEFAULT NULL);
eingebe, ehalte ich den Fehler: Error: near "ON": syntax error

Die history Tabelle betrifft das nicht, die ja quasi identisch ist.

Vielen Dank im Voraus.
_fhemuser_
fhem in der aktuellsten Version auf:
Raspberry 4 mit SSD | fhem2fhem | NanoCul433 Selbstbau | NanoCul868 Selbstbau | DbLog | MAX! | zigbee2MQTT | alexa | Solar
inkl zigbee2MQTT Server, Unifi-Server

Raspberry 4 mit SD Karte | fhem2fhem | motioneye

Waldmensch

Funktioniert das ON UPDATE überhaupt in SQLite? M.E. Geht das nur mit Trigger. Ich wüsste auch nicht, was das ON UPDATE für einen Sinn macht. Imho wird die Tabelle doch nur fortlaufend mit INSERT geschrieben.


Gesendet von iPhone mit Tapatalk

Otto123

Hi _fhemuser_,
Schau mal besser in die Commandref, da ist ein link zum SVN, da sind die aktuellen Scripte enthalten.

https://svn.fhem.de/trac/browser/trunk/fhem/contrib/dblog

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

amenomade

Nimm die Befehle, die in /opt/fhem/contrib/dblog/db_create_sqlite.sql sind
Oder einfach:
sudo sqlite3 /opt/fhem/fhem.db < /opt/fhem/contrib/dblog/db_create_sqlite.sql
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

_fhemuser_

Vielen Dank für die vielen schnellen Antworten.

Die Lösung von amenomade war die schnellste und einfachste.

Es funktioniert jetzt wieder wie gewohnt.

Dann wäre es doch vielleicht sinnvoll im Wiki im Abschnitt SQLite nur den EintragCREATE TABLE current (TIMESTAMP TIMESTAMP, DEVICE varchar(64), TYPE varchar(64), EVENT varchar(512), READING varchar(64), VALUE varchar(128), UNIT varchar(32)); einzutragen.

fhem in der aktuellsten Version auf:
Raspberry 4 mit SSD | fhem2fhem | NanoCul433 Selbstbau | NanoCul868 Selbstbau | DbLog | MAX! | zigbee2MQTT | alexa | Solar
inkl zigbee2MQTT Server, Unifi-Server

Raspberry 4 mit SD Karte | fhem2fhem | motioneye

Waldmensch

Nein, der stimmt so nicht. Beim INSERT würde keine automatische Timestamp erstellt. Entsprechend ließen sich die Readings nicht mehr zeitlich zuordnen.


Gesendet von iPhone mit Tapatalk

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Waldmensch

Mit einem INSERT Kommando wird ein Datensatz in die Tabelle geschrieben. FHEM liefert dabei soweit ich weiß keine Timestamp mit. Daher muss das setzen der Timestamp von der Datenbank selbst übernommen werden. Das stellt man über das DEFAULT Attribut der Timestamp Spalte bei der Erstellung der Tabelle ein.
Im weiter oben verlinkten Skript ist es richtig. Im Codebeispiel des OP fehlt das DEFAULT Attribut.


Gesendet von iPhone mit Tapatalk

_fhemuser_

fhem in der aktuellsten Version auf:
Raspberry 4 mit SSD | fhem2fhem | NanoCul433 Selbstbau | NanoCul868 Selbstbau | DbLog | MAX! | zigbee2MQTT | alexa | Solar
inkl zigbee2MQTT Server, Unifi-Server

Raspberry 4 mit SD Karte | fhem2fhem | motioneye

Waldmensch

#9
Wie die, im oben verlinkten Skript. So schwer kann das doch nicht sein [emoji51]

Edit: ich sehe grad, das der DEFAULT nur in der Historie Tabelle gesetzt wird. Imho ist der Befehl für die current auch im Skript nicht richtig.



CREATE TABLE history (TIMESTAMP TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, DEVICE varchar(64), TYPE varchar(64), EVENT varchar(512), READING varchar(64), VALUE varchar(128), UNIT varchar(32));


Gesendet von iPhone mit Tapatalk

DS_Starter

Hallo zusammen,

muss mal kurz einhaken...

ZitatFHEM liefert dabei soweit ich weiß keine Timestamp mit. Daher muss das setzen der Timestamp von der Datenbank selbst übernommen werden. Das stellt man über das DEFAULT Attribut der Timestamp Spalte bei der Erstellung der Tabelle ein.
Das ist nicht richtig. FHEM bringt den Timestamp mit, entweder den Timestamp von CHANGETIME des Events wenn vorhanden, ansonsten den aktuellen Timestamp.

LG,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Waldmensch

Dann wäre das DEFAULT in der History aber auch nicht nötig. Warum setzt man es da?
Das DEFAULT kommt nur zum Einsatz, wenn beim INSERT der Wert nicht, oder als NULL übergeben wird


Gesendet von iPhone mit Tapatalk

DS_Starter

ZitatDann wäre das DEFAULT in der History aber auch nicht nötig. Warum setzt man es da?
Stimmt, wäre auch nicht nötig.
DbLog gibt es schon seit mehr als 10 Jahren und hat bestimmt eine bewegte Geschichte hinter sich. Vielleicht wurde der Timestamp früher nicht geliefert, ich kann es nicht sagen. Ich betreue das Modul erst rund 3 Jahre seit ca. Ende 2016.
Aber da es nicht stört, muss man das Erstellungsscript auch nicht ändern.

LG,
Heiko


Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Otto123

Zitat von: DS_Starter am 19 Januar 2020, 18:26:34
muss man das Erstellungsscript auch nicht ändern.
Hallo Heiko,

müssen wir das Wiki ändern? Da steht ja ein völlig anderes Script. Im Wiki besser bloß link zum Contrib?

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

DS_Starter

Hallo Otto,

jetzt wo du es fragst ... ich habe mir das zitierte Wiki noch garnicht komplett angeschaut.  :(
Ein Link zum contrib bzw. den dort hinterlegten Skripten wäre m.M. das Beste weil die sich im Zuge von Weiterentwicklungen durchaus  mal ändern können.

Schönen Wochenstart !

Grüße,
Heiko
Proxmox+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter