DbLog - Umstellung Betrieb auf SubProcess -> Tester gesucht

Begonnen von DS_Starter, 29 November 2022, 12:54:25

Vorheriges Thema - Nächstes Thema

ch.eick

Moin Heiko,
macht es für mich schon Sinn diese Version zu verwenden? Du weißt ja was ich so alles für SQL kapriolen treibe :-)

VG  Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

DS_Starter

Ja. Für deine SQL nutzt du ja Rep.
Die neue DbLog hat vor allem die Schreibvorgänge in einen subprocess verlagert.

ESXi@NUC+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

DS_Starter

Hallo @all,

im contrib ist die V 5.5.10 bereitgestellt.

In die Version sind einige Code Erweiterungen/Änderungen eingeflossen, die diverse Optimierungen und Fehlerbeseitigungen bzgl. verschiedener gemeldeter Issues beinhalten.

Es würde mich freuen wenn ein paar User die Version bei sich gegenchecken würden bevor ich sie demnächst veröffentliche.
Zum Download in der FHEMWEB Kommandozeile inklusive der Anführungszeichen angeben und danach FHEM restarten:


"wget -qO ./FHEM/93_DbLog.pm https://svn.fhem.de/fhem/trunk/fhem/contrib/DS_Starter/93_DbLog.pm"


schönen Restsonntag,
Heiko
ESXi@NUC+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

Hanjo

Hi Heiko,

ich habe seit dem Update ein Problem:

Ich verwende die MariaDB auf einem Synology NAS. Einmal pro Nacht wird durch die eingebaute Backup-Funktionalität der DB-Server kurz ausgeschaltet. Bisher war das kein Problem, die Verbindung war halt kurz weg, die Log-Einträge wurden gecached und dann nach einiger Zeit, wenn der Server wieder da war, in die DB geschrieben.

Mit der neuen Version funktioniert das aber nicht, scheinbar kommt keine Verbindung zur DB mehr zu Stand und es treten Fehlermeldungen im Log auf.

Außerdem wird das Log vollgeschrieben mit den genauen SQL Statements, so dass es in kurzer Zeit mehrere GB groß wird und irgendwann die Festplatte vollläuft.

Ich habe versucht das Problem zu beheben, in dem ich manuell "reopen", "rereadcfg" und "stopSubProcess" ausführe, aber das hat alles nichts gebracht. Was geholfen hat ist ein Neustart von FHEM; danach funktioniert die Verbindung wieder (bis zum nächsten Backup).

Bei einem neuen Versuch habe ich, als das Problem wieder auftrat, "bulkInsert" gelöscht (war vorher 1) und das Schreiben in die DB hat wieder funktioniert, ohne dass ich FHEM neustarten musste.

Hier ein paar Logs:
2023.01.08 04:31:24 2: DbLog logdb - Error: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2597.
2023.01.08 04:31:24 2: DbLog logdb - Error: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2597.
2023.01.08 04:31:24 2: DbLog logdb - Error: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2597.
2023.01.08 04:31:24 2: DbLog logdb - Error: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2597.
2023.01.08 04:31:40 2: DbLog logdb - Error: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2597.
2023.01.08 04:31:40 2: DbLog logdb - Error: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2597.
2023.01.08 04:31:40 2: DbLog logdb - Error: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2597.
2023.01.08 04:31:40 2: DbLog logdb - Error: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2597.
2023.01.08 04:31:56 3: DbLog logdb - SubProcess connected to fhem
2023.01.08 04:31:56 2: DbLog logdb - Error table history - DBD::mysql::st execute failed: MySQL server has gone away [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (...)"] at ./FHEM/93_DbLog.pm line 2755.
2023.01.08 04:31:56 2: DbLog logdb - Error - DBD::mysql::db rollback failed: Turning on AutoCommit failed at ./FHEM/93_DbLog.pm line 4170.
2023.01.08 04:31:57 1: PERL WARNING: (in cleanup) DBD::mysql::db DESTROY failed: MySQL server has gone away at ./FHEM/93_DbLog.pm line 2439.
2023.01.08 04:31:57 2: DbLog logdb - Error table history - Can't call method "prepare" on unblessed reference at ./FHEM/93_DbLog.pm line 2746.
2023.01.08 04:31:57 2: DbLog logdb - Error - Can't call method "rollback" on unblessed reference at ./FHEM/93_DbLog.pm line 4170.
2023.01.08 04:32:23 3: DbLog logdb - SubProcess connected to fhem
2023.01.08 04:32:23 2: DbLog logdb - Error table history - DBD::mysql::st execute failed: MySQL server has gone away [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (...)"] at ./FHEM/93_DbLog.pm line 2755.
2023.01.08 04:32:23 2: DbLog logdb - Error - DBD::mysql::db rollback failed: Turning on AutoCommit failed at ./FHEM/93_DbLog.pm line 4170.
2023.01.08 04:32:26 2: DbLog logdb - Error table history - Can't call method "prepare" on unblessed reference at ./FHEM/93_DbLog.pm line 2746.
2023.01.08 04:32:26 2: DbLog logdb - Error - Can't call method "rollback" on unblessed reference at ./FHEM/93_DbLog.pm line 4170.


Und später dann, als die DB wieder da war:
2023.01.08 09:24:10 2: DbLog logdb - Error - DBD::mysql::db rollback failed: Turning on AutoCommit failed at ./FHEM/93_DbLog.pm line 4170.
2023.01.08 09:24:14 2: DbLog logdb - Error table history - Can't call method "prepare" on unblessed reference at ./FHEM/93_DbLog.pm line 2746.
2023.01.08 09:24:14 2: DbLog logdb - Error - Can't call method "rollback" on unblessed reference at ./FHEM/93_DbLog.pm line 4170.
2023.01.08 09:24:20 3: DbLog logdb - Database disconnected by request. <br>Stored DB params in SubProcess were deleted.
2023.01.08 09:24:20 3: DbLog logdb - DB connection parameters are stored in SubProcess
2023.01.08 09:24:28 3: DbLog logdb - SubProcess connected to fhem
2023.01.08 09:24:34 2: DbLog logdb - Error table history - DBD::mysql::st execute failed: MySQL server has gone away [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (...)"] at ./FHEM/93_DbLog.pm line 2755.
2023.01.08 09:24:34 2: DbLog logdb - Error - DBD::mysql::db rollback failed: Turning on AutoCommit failed at ./FHEM/93_DbLog.pm line 4170.
2023.01.08 09:24:35 2: DbLog logdb - Error table history - Can't call method "prepare" on unblessed reference at ./FHEM/93_DbLog.pm line 2746.
2023.01.08 09:24:35 2: DbLog logdb - Error - Can't call method "rollback" on unblessed reference at ./FHEM/93_DbLog.pm line 4170.
2023.01.08 09:24:45 3: DbLog logdb - SubProcess connected to fhem
2023.01.08 09:24:50 2: DbLog logdb - Error table history - DBD::mysql::st execute failed: MySQL server has gone away [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES (...)"] at ./FHEM/93_DbLog.pm line 2755.
2023.01.08 09:24:50 2: DbLog logdb - Error - DBD::mysql::db rollback failed: Turning on AutoCommit failed at ./FHEM/93_DbLog.pm line 4170.
2023.01.08 09:24:54 2: DbLog logdb - Error table history - Can't call method "prepare" on unblessed reference at ./FHEM/93_DbLog.pm line 2746.
2023.01.08 09:24:54 2: DbLog logdb - Error - Can't call method "rollback" on unblessed reference at ./FHEM/93_DbLog.pm line 4170.
2023.01.08 09:25:09 3: DbLog logdb - SubProcess connected to fhem


Wobei die "..." alle Daten sind, die in die DB geschrieben werden sollten.

Hier noch das Listing:
Internals:
   COLUMNS    field length used for Device: 64, Type: 64, Event: 0, Reading: 128, Value: 128, Unit: 32
   CONFIGURATION ./db.conf
   DEF        ./db.conf .*:.*
   FD         5
   FUUID      5c83ff6d-f33f-d125-10cd-28b46c8630c70722
   FVERSION   93_DbLog.pm:v5.5.9-s26923/2022-12-29
   MODE       asynchronous
   MODEL      MYSQL
   NAME       logdb
   NR         2
   NTFY_ORDER 50-logdb
   PID        429
   REGEXP     .*:.*
   SBP_PID    23417
   SBP_STATE  running
   STATE      connected
   TYPE       DbLog
   UTF8       1
   dbconn     mysql:database=fhem;host=nas.lokal;port=3306
   dbuser     fhem
   eventCount 3471
   HELPER:
     COLSET     1
     DEVICECOL  64
     EVENTCOL   0
     OLDSTATE   connected
     PACKAGE    main
     READINGCOL 128
     TC         current
     TH         history
     TYPECOL    64
     UNITCOL    32
     VALUECOL   128
     VERSION    5.5.9
   Helper:
     DBLOG:
       CacheOverflowLastNum:
         logdb:
           TIME       1673170209.33208
           VALUE      0
       CacheOverflowLastState:
         logdb:
           TIME       1673166338.73315
           VALUE      normal
       state:
         logdb:
           TIME       1673168868.14695
           VALUE      connected
   OLDREADINGS:
   READINGS:
     2023-01-08 10:30:09   CacheOverflowLastNum 0
     2023-01-08 09:25:38   CacheOverflowLastState normal
     2023-01-08 10:30:29   CacheUsage      112
     2023-01-08 10:30:09   NextSync        2023-01-08 10:30:39 or when CacheUsage 500 is reached
     2023-01-08 10:30:09   state           connected
     2016-05-05 19:48:44   userCommand     SELECT type, name FROM sqlite_master WHERE type='table' OR type='view' ORDER BY name;
   hmccu:
Attributes:
   DbLogSelectionMode Exclude/Include
   asyncMode  1
   colEvent   0
   colReading 128
   colValue   128

(wobei hier bulkInsert schon fehlt, das war vorher 1)

Könntest du mal schauen, ob es hier ein Problem mit dem Reconnect gibt?

Danke & Gruß
Hanjo

DS_Starter

#184
Hallo Hanjo,

danke für die Meldung.
Ich schaue es mir an.
Ein Teil des Problems sollte sich bereits mit der Version im contrib 5.5.10 beseitigt sein.

Möglicherweise habe ich bis heute Abend noch eine Ergänzung für die contrib 5.5.10.

EDIT: bedeutet das reconnect Problem ist mit bulkInsert = 0 (oder gelöscht) nicht mehr da ?

LG
ESXi@NUC+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

Hanjo

Danke  :)

Zitat von: DS_Starter am 08 Januar 2023, 11:45:22
bedeutet das reconnect Problem ist mit bulkInsert = 0 (oder gelöscht) nicht mehr da ?

Gute Frage - ich hatte das Attribut gelöscht und danach ging es wieder, aber seitdem lief kein Backup mehr.  Ich bleibe mal die nächste Nacht noch auf der v5.5.9; morgen früh kann ich dann reporten, ob der Reconnect ohne bulkInsert = 1 funktioniert.

Gruß
Hanjo

DS_Starter

Nimm ruhig schon die v aus dem contrib.
Da ist schon viel eingeflossen.
Bringt uns mehr nach vorn.

Lg
ESXi@NUC+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

DS_Starter

@all,

ich habe die Version 5.5.10 im contrib upgedated.
Das von Hanjo oben gemeldete Problem sollte gelöst sein.

Desweiteren wird die Logausgabe bei dauerhaften Verbindungsproblemen (Wartung, Backup, etc.) begrenzt:


2023.01.08 18:11:07.642 2: DbLog LogDB - ERROR: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 2484.

2023.01.08 18:11:11.703 2: DbLog LogDB - ERROR: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 2484.

2023.01.08 18:11:14.775 2: DbLog LogDB - ERROR: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 2484.

2023.01.08 18:11:17.847 2: DbLog LogDB - ERROR: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 2484.

2023.01.08 18:11:20.919 2: DbLog LogDB - ERROR: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 2484.

2023.01.08 18:11:23.991 2: DbLog LogDB - ERROR: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 2484.

2023.01.08 18:11:30.455 2: DbLog LogDB - ERROR: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 2484.

2023.01.08 18:11:33.527 2: DbLog LogDB - ERROR: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 2484.

2023.01.08 18:11:41.815 2: DbLog LogDB - ERROR: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 2484.

2023.01.08 18:11:44.887 2: DbLog LogDB - ERROR: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 2484.

2023.01.08 18:11:47.959 2: DbLog LogDB - ERROR: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 2484.

2023.01.08 18:11:47.960 2: DbLog LogDB - There seems to be a permanent connection error to the database. Further error messages are suppressed.


Desweiteren ist configCheck ergänzt um ein Rating Ampelsystem.
Dadurch sieht man schnell ob es Punkte gibt, die eine Prüfung oder Aufmerksamkeit erfordern (Anhang).

Liegt im contrib.
ESXi@NUC+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

Hanjo

#188
Super - danke. Ich habe die Version installiert und werde morgen berichten. Ich lass es jetzt erst mal eine Nacht ohne Bulk laufen und stelle dann wieder um.

Gruß

Hanjo

Guten Morgen,

kurzer Statusbericht: heute Nacht gab es keine Probleme. Die Log-Einträge haben sich auf folgende Zeilen beschränkt:
2023.01.09 04:03:08 2: DbLog logdb - ERROR: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2484.
2023.01.09 04:03:38 2: DbLog logdb - ERROR: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2484.
2023.01.09 04:03:50 2: DbLog logdb - ERROR: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2484.
2023.01.09 04:03:51 2: DbLog logdb - ERROR: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2484.
2023.01.09 04:04:06 2: DbLog logdb - ERROR: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2484.
2023.01.09 04:04:23 2: DbLog logdb - ERROR: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2484.
2023.01.09 04:04:40 2: DbLog logdb - ERROR: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2484.
2023.01.09 04:04:56 2: DbLog logdb - ERROR: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2484.
2023.01.09 04:05:11 2: DbLog logdb - ERROR: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2484.
2023.01.09 04:05:26 2: DbLog logdb - ERROR: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2484.
2023.01.09 04:05:41 2: DbLog logdb - ERROR: DBI connect('database=fhem;host=nas.lokal;port=3306','fhem',...) failed: Can't connect to MySQL server on 'nas.lokal' (111) at ./FHEM/93_DbLog.pm line 2484.
2023.01.09 04:05:41 2: DbLog logdb - There seems to be a permanent connection error to the database. Further error messages are suppressed.
2023.01.09 04:35:36 3: DbLog logdb - SubProcess connected to fhem


Ich setze nun bulkInsert wieder auf 1 und berichte dann morgen wieder.

Grüße
Hanjo

DS_Starter

Hallo Hanjo,

kannst du bitte die V 5.5.11 aus dem contrib ziehen und bei dir zum Test einspielen ?

Ich habe noch etwas an der Verfügbarkeitserkennung der DB verbessert und einiges im Code strukturiert.
Das möchte ich bei dir gleich mit in den Test einfließen lassen.
Funktional hat sich nichts geändert.

LG
ESXi@NUC+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

Hanjo

Hi Heiko,

ok, habe ich installiert. Allerdings kam gleich nach dem Neustart von FHEM einmalig folgende Fehlermeldung:
2023.01.09 19:56:23 2: DbLog logdb - Error table history - DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES"] at ./FHEM/93_DbLog.pm line 2714.

Seitdem scheint es aber zu gehen.

Ich habe mal das Log durchgeschaut, ich hatte den Fehler auch vorher schon mal in der Version v5.5.10:
2023.01.09 17:45:28 2: DbLog logdb - Error table history - DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES"] at ./FHEM/93_DbLog.pm line 2652.

Grüße
Hanjo

DS_Starter

Die Version habe ich natürlich vorher bei mir durchgetestet.
Dieser Fehler:


syntax to use near '' ...


kann erstmal nicht eingeordnet werden. Sieht aber nach einem speziellen Fall aus.
Schwierig zu sagen ohne zu wissen welche Daten genau geloggt werden sollten.
Wenn du die Situation provozieren kannst, dann lohnt es sich verbose 5 einzustellen um diese Daten zu sehen.
ESXi@NUC+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

Hanjo

Zitat von: DS_Starter am 09 Januar 2023, 20:12:49
Wenn du die Situation provozieren kannst, dann lohnt es sich verbose 5 einzustellen um diese Daten zu sehen.

Habe mal ein bisschen rumgespielt, scheinbar erscheint der Fehler nach jedem Neustart von FHEM, so dass ich die Debug-Logdaten erzeugen konnte. Ich konnte auf den ersten Blick nichts außergewöhnliches an den Daten feststellen... Da das recht umfangreich ist und reale Daten von mir enthält, schicke ich dir das per PN.

Danke & Gruß
Hanjo

Hanjo

Morgen Heiko,

mit bulkInsert = 1 hatte ich heute morgen wieder das gleiche Problem:
Internals:
   COLUMNS    field length used for Device: 64, Type: 64, Event: 0, Reading: 128, Value: 128, Unit: 32
   CONFIGURATION ./db.conf
   DEF        ./db.conf .*:.*
   FD         5
   FUUID      5c83ff6d-f33f-d125-10cd-28b46c8630c70722
   FVERSION   93_DbLog.pm:v5.5.11-s26923/2023-01-09
   MODE       asynchronous
   MODEL      MYSQL
   NAME       logdb
   NR         2
   NTFY_ORDER 50-logdb
   PID        19196
   REGEXP     .*:.*
   SBP_PID    19197
   SBP_STATE  running
   STATE      DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES"] at ./FHEM/93_DbLog.pm line 2714.

   TYPE       DbLog
   UTF8       1
   dbconn     mysql:database=fhem;host=nas.lokal;port=3306
   dbuser     fhem
   eventCount 2182
   HELPER:
     COLSET     1
     DEVICECOL  64
     EVENTCOL   0
     LASTLIMITRUNTIME 1673332655.14323
     OLDSTATE   DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES"] at ./FHEM/93_DbLog.pm line 2714.

     PACKAGE    main
     READINGCOL 128
     TC         current
     TH         history
     TYPECOL    64
     UNITCOL    32
     VALUECOL   128
     VERSION    5.5.11
   Helper:
     DBLOG:
       CacheOverflowLastNum:
         logdb:
           TIME       1673332652.42455
           VALUE      100875
       CacheOverflowLastState:
         logdb:
           TIME       1673319030.12353
           VALUE      exceeded
       state:
         logdb:
           TIME       1673332658.30111
           VALUE      DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES"] at ./FHEM/93_DbLog.pm line 2714.

   OLDREADINGS:
   READINGS:
     2023-01-10 07:37:32   CacheOverflowLastNum 100876
     2023-01-10 03:50:30   CacheOverflowLastState exceeded
     2023-01-10 07:37:39   CacheUsage      36
     2023-01-10 07:37:32   NextSync        2023-01-10 07:38:02 or when CacheUsage 500 is reached
     2023-01-10 07:37:38   state           DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1 [for Statement "INSERT IGNORE INTO history (TIMESTAMP, DEVICE, TYPE, EVENT, READING, VALUE, UNIT) VALUES"] at ./FHEM/93_DbLog.pm line 2714.

     2016-05-05 19:48:44   userCommand     SELECT type, name FROM sqlite_master WHERE type='table' OR type='view' ORDER BY name;
Attributes:
   DbLogSelectionMode Exclude/Include
   asyncMode  1
   bulkInsert 1
   colEvent   0
   colReading 128
   colValue   128


Nachdem ich bulkInsert gelöscht hatte, konnten die Daten sofort gespeichert werden:
Internals:
   COLUMNS    field length used for Device: 64, Type: 64, Event: 0, Reading: 128, Value: 128, Unit: 32
   CONFIGURATION ./db.conf
   DEF        ./db.conf .*:.*
   FD         5
   FUUID      5c83ff6d-f33f-d125-10cd-28b46c8630c70722
   FVERSION   93_DbLog.pm:v5.5.11-s26923/2023-01-09
   MODE       asynchronous
   MODEL      MYSQL
   NAME       logdb
   NR         2
   NTFY_ORDER 50-logdb
   PID        19196
   REGEXP     .*:.*
   SBP_PID    19197
   SBP_STATE  running
   STATE      connected
   TYPE       DbLog
   UTF8       1
   dbconn     mysql:database=fhem;host=nas.lokal;port=3306
   dbuser     fhem
   eventCount 2195
   HELPER:
     COLSET     1
     DEVICECOL  64
     EVENTCOL   0
     OLDSTATE   connected
     PACKAGE    main
     READINGCOL 128
     TC         current
     TH         history
     TYPECOL    64
     UNITCOL    32
     VALUECOL   128
     VERSION    5.5.11
   Helper:
     DBLOG:
       CacheOverflowLastNum:
         logdb:
           TIME       1673332763.08652
           VALUE      0
       CacheOverflowLastState:
         logdb:
           TIME       1673332733.02672
           VALUE      normal
       state:
         logdb:
           TIME       1673332761.25858
           VALUE      connected
   OLDREADINGS:
   READINGS:
     2023-01-10 07:39:23   CacheOverflowLastNum 0
     2023-01-10 07:38:53   CacheOverflowLastState normal
     2023-01-10 07:39:23   CacheUsage      478
     2023-01-10 07:39:23   NextSync        2023-01-10 07:39:53 or when CacheUsage 500 is reached
     2023-01-10 07:39:23   state           connected
     2016-05-05 19:48:44   userCommand     SELECT type, name FROM sqlite_master WHERE type='table' OR type='view' ORDER BY name;
   hmccu:
Attributes:
   DbLogSelectionMode Exclude/Include
   asyncMode  1
   colEvent   0
   colReading 128
   colValue   128


Ich habe auch noch das Logfile mit den genauen Einträgen, aber das kann ich erst heute Abend analysieren.

Grüße
Hanjo