Hallo Zusammen,
ich hab heute eine neue Datenbank angelegt, da ich sehr viel mit DBLog falsch gemacht hatte.
Nun bekomme ich alle paar Minuten einen Log Eintrag.
Den kann ich mir nicht erklären.
Eine suche im Forum hat auch nicht wirklich weiter geholfen.
Jemand hier der mir das Problem erklären kann?
DbLog DBLog -> Error table history - DBD::mysql::st execute_array failed: executing 6677 generated 1 errors at ./FHEM/93_DbLog.pm line 2094.
Hier auch mal ein List vom DBLog Device
Internals:
COLUMNS field length used for Device: 64, Type: 64, Event: 512, Reading: 64, Value: 128, Unit: 32
CONFIGURATION /opt/fhem/FHEM/db.conf
DEF /opt/fhem/FHEM/db.conf .*:.*
FUUID 5c4308fc-f33f-abd1-4b44-886d7423922a60bf
MODE asynchronous
MODEL MYSQL
NAME DBLog
NR 979
NTFY_ORDER 50-DBLog
PID 1629
REGEXP .*:.*
STATE DBD::mysql::st execute_array failed: executing 10077 generated 1 errors at ./FHEM/93_DbLog.pm line 2094.
TYPE DbLog
UTF8 1
VERSION 3.13.0
dbconn mysql:database=fhem;host=localhost;port=3306
dbuser mysql-fhemuser
HELPER:
COLSET 1
DEVICECOL 64
EVENTCOL 512
LASTLIMITRUNTIME 1548702534.65003
OLDSTATE DBD::mysql::st execute_array failed: executing 10077 generated 1 errors at ./FHEM/93_DbLog.pm line 2094.
READINGCOL 64
TYPECOL 64
UNITCOL 32
VALUECOL 128
Helper:
DBLOG:
CacheUsage:
DBLog:
TIME 1548702175.83884
VALUE 0
background_processing_time:
DBLog:
TIME 1548701821.46618
VALUE 9.5134
lastCachefile:
DBLog:
TIME 1548702175.82017
VALUE ./log/cache_DBLog_2019-01-28_20-02-55 (63 cache rows exported)
sql_processing_time:
DBLog:
TIME 1548701821.46618
VALUE 9.4560
state:
DBLog:
TIME 1548702515.02869
VALUE DBD::mysql::st execute_array failed
READINGS:
2019-01-28 20:08:54 CacheUsage 3
2019-01-28 20:08:54 NextSync 2019-01-28 20:09:24 or if CacheUsage 500 reached
2019-01-28 20:02:55 lastCachefile ./log/cache_DBLog_2019-01-28_20-02-55 (63 cache rows exported)
2019-01-28 13:40:52 reduceLogState reduceLogNbl finished. Rows processed: 14033071, deleted: 0, updated: 0, time: 1505.68sec
2019-01-28 20:08:54 state DBD::mysql::st execute_array failed: executing 10077 generated 1 errors at ./FHEM/93_DbLog.pm line 2094.
cache:
index 141245
Attributes:
DbLogSelectionMode Exclude/Include
DbLogType Current/History
asyncMode 1
group DBLogging
room 9.99_Logs
showproctime 0
shutdownWait 10
userReadings DbFileSize:lastReduceLogResult.* { (split(' ','sudo du -hs /var/lib/mysql/fhem'))[0] }
Und hier noch ein Config Check
Result of DbLog version check
Used DbLog version: 3.13.0
Recommendation: Your running version may be the current one. Please check for updates of DbLog periodically.
Result of configuration read check
Connection parameter store type: file
Connection parameter: Connection -> mysql:database=fhem;host=localhost;port=3306, User -> mysql-fhemuser, Password -> read o.k.
Result of connection check
Connection to database fhem successfully done.
Recommendation: settings o.k.
Result of encoding check
Encoding used by Client (connection): UTF8
Encoding used by DB fhem: UTF8
Recommendation: settings o.k.
Result of logmode check
Logmode of DbLog-device DBLog is: asynchronous
Recommendation: settings o.k.
Result of shutdown sequence preparation check
Attribute "shutdownWait" is set to: 10
Recommendation: The setting may be ok. But due to the Reading "background_processing_time" is not available (you may set attribute "showproctime"), the current
setting is only a rough estimate.
Result of plot generation method check
WARNING - at least one of your FHEMWEB devices have attribute "plotfork = 1" not set. This may cause blocking situations when creating plots.
WEB: plotfork=1
WEB.desiree: plotfork=1
WEB.extern: plotfork=1
WEBgeo: plotfork=0
WEBphone: plotfork=1
WEBtablet: plotfork=1
Recommendation: You should set attribute "plotfork = 1" in relevant devices
Result of table 'history' check
Column width set in DB fhem.history: 'DEVICE' = 64, 'TYPE' = 64, 'EVENT' = 512, 'READING' = 64, 'VALUE' = 128, 'UNIT' = 32
Column width used by DBLog: 'DEVICE' = 64, 'TYPE' = 64, 'EVENT' = 512, 'READING' = 64, 'VALUE' = 128, 'UNIT' = 32
Recommendation: settings o.k.
Result of table 'current' check
Column width set in DB fhem.current: 'DEVICE' = 64, 'TYPE' = 64, 'EVENT' = 512, 'READING' = 64, 'VALUE' = 128, 'UNIT' = 32
Column width used by DBLog: 'DEVICE' = 64, 'TYPE' = 64, 'EVENT' = 512, 'READING' = 64, 'VALUE' = 128, 'UNIT' = 32
Recommendation: settings o.k.
Result of check 'Search_Idx' availability
Index 'Search_Idx' exists and contains recommended fields 'DEVICE', 'READING', 'TIMESTAMP'.
Recommendation: settings o.k.
Result of check 'Report_Idx' availability for DbRep-devices
At least one DbRep-device assigned to DBLog is used, but the recommended index 'Report_Idx' is missing.
Recommendation: You can create the index by executing statement 'CREATE INDEX Report_Idx ON `history` (TIMESTAMP, READING) USING BTREE;'
Depending on your database size this command may running a long time.
Please make sure the device 'DBLog' is operating in asynchronous mode to avoid FHEM from blocking when creating the index.
Note: If you have just created another index which covers the same fields and order as suggested (e.g. a primary key) you don't need to create the 'Report_Idx' as well !
Das ist ein Datensatz der nicht in die DB will. Wir hatten immer mal mit bestimmten Temperatursensoren.
Als Lösungsversuch die Attribute setzen:
* useCharfilter = 1
* commitMode = basic_ta:off
Check das mal.
Grüße
Heiko
Zitat von: DS_Starter am 28 Januar 2019, 20:19:15
Das ist ein Datensatz der nicht in die DB will. Wir hatten immer mal mit bestimmten Temperatursensoren.
Als Lösungsversuch die Attribute setzen:
* useCharfilter = 1
* commitMode = basic_ta:off
Check das mal.
Grüße
Heiko
Danke Heiko,
ich teste es gleich und gebe morgen Früh bescheid.
Kann man das auf einen Bestimmten Typ Temperatur Sensor eingrenzen?
Ich hab Homematic, Netatmo und einen selbst gebauten ESP im Einsatz.
Gruß Robert
Zitat
Kann man das auf einen Bestimmten Typ Temperatur Sensor eingrenzen?
Ich hab Homematic, Netatmo und einen selbst gebauten ESP im Einsatz.
Ja kannst du. Entweder mal im Cache nach auffälligen Sätzen suchen, zum Beispiel "°C", wobei das "°" in unleserlichen Zeichen wiedergegeben wird.
Oder verbose auf 4 oder 5 setzen und den "Database cycle" anschauen oder posten.
Die genannten Attribute sollten dann aber noch nicht gesetzt sein.
Edit: im Forum hatten wir das schon öfter. Mit einer recht gut nachvollziehbaren Fehlersuche. Vielleicht finde ich den Thread noch ...
gefunden: https://forum.fhem.de/index.php/topic,92147.msg846619.html#msg846619 bzw. https://forum.fhem.de/index.php/topic,68646.msg844959.html#msg844959
Zitat von: DS_Starter am 28 Januar 2019, 20:29:43
Ja kannst du. Entweder mal im Cache nach auffälligen Sätzen suchen, zum Beispiel "°C", wobei das "°" in unleserlichen Zeichen wiedergegeben wird.
Oder verbose auf 4 oder 5 setzen und den "Database cycle" anschauen oder posten.
Die genannten Attribute sollten dann aber noch nicht gesetzt sein.
Edit: im Forum hatten wir das schon öfter. Mit einer recht gut nachvollziehbaren Fehlersuche. Vielleicht finde ich den Thread noch ...
gefunden: https://forum.fhem.de/index.php/topic,92147.msg846619.html#msg846619 bzw. https://forum.fhem.de/index.php/topic,68646.msg844959.html#msg844959
Die Fehler im Log sind weg, wenn ich beides von dir setzte.
Woher der Fehler kommt schauen ich heute abend nach.
Noch eine Frage wegen dem Report_Idx
Kann das über FHEM ausgelöst werden oder doch über die konsole in die Datenbank direkt?
Muss bei mysql auch mit dem USING BETREE gearbeitet werden?
Wenn ja, sollte man das nicht im MYSQL Create in Contrib anpassen?
Danke und Gruß Robert
Hallo Robert,
sieht ja gut aus.
Du kannst jetzt bitte das Attribut "commitMode" wieder löschen. Es wäre für den asynchronen Normalbetrieb besser weil ich bestimmte Funktionen im DbLog darauf abgestimmt habe.
Den anderen kannst du nach deiner Fehlersuche wieder setzen wenn du magst. Der hilft solche Situationen zu vermeiden.
Zitat
Noch eine Frage wegen dem Report_Idx
Kann das über FHEM ausgelöst werden oder doch über die konsole in die Datenbank direkt?
Geht beides. In FHEM machst du das in einem DbRep-Device -Kommando sqlCmd ....
ZitatMuss bei mysql auch mit dem USING BETREE gearbeitet werden?
Müssen nicht. Aber der BTREE Index ist vorteilhaft bei Vergleichsoparationen ( =, >, >=, <, <=, or BETWEEN or LIKE) wie sie oft in DbRep-Devices verwendet werden. Siehe auch -> https://dev.mysql.com/doc/refman/5.5/en/index-btree-hash.html
ZitatWenn ja, sollte man das nicht im MYSQL Create in Contrib anpassen?
Stimmt, werde ich tun.
Grüße,
Heiko
Zitat von: DS_Starter am 29 Januar 2019, 18:23:47
Hallo Robert,
sieht ja gut aus.
Du kannst jetzt bitte das Attribut "commitMode" wieder löschen. Es wäre für den asynchronen Normalbetrieb besser weil ich bestimmte Funktionen im DbLog darauf abgestimmt habe.
Den anderen kannst du nach deiner Fehlersuche wieder setzen wenn du magst. Der hilft solche Situationen zu vermeiden.
Geht beides. In FHEM machst du das in einem DbRep-Device -Kommando sqlCmd ....
Müssen nicht. Aber der BTREE Index ist vorteilhaft bei Vergleichsoparationen ( =, >, >=, <, <=, or BETWEEN or LIKE) wie sie oft in DbRep-Devices verwendet werden. Siehe auch -> https://dev.mysql.com/doc/refman/5.5/en/index-btree-hash.html
Stimmt, werde ich tun.
Grüße,
Heiko
Ich hab eben mal viel eingeschränkt, was in die Datenbank schreiben solle.
Werde jetzt mal die beiden attr wieder raus nehmen und schauen was passiert.
Melde mich dazu wieder.
Das mit sqlcmd ausführen habe ich gemacht.
Bekomme aber einen Fehler.
Denke dass liegt an den Rechten, da wird dem mysql-fhemuser etwas an rechten fehlen.
DbRep DBLog.Rep.NameReport - ERROR - DBD::mysql::st execute failed: INDEX command denied to user 'mysql-fhemuser'@'localhost' for table 'history' at ./FHEM/93_DbRep.pm line 5640.
Ganz Vergessen,
Danke für deine spitzen Hilfe!!!!!
Gruß Robert
Hi Robert,
gerne :)
Zitat
Das mit sqlcmd ausführen habe ich gemacht.
Bekomme aber einen Fehler.
Denke dass liegt an den Rechten, da wird dem mysql-fhemuser etwas an rechten fehlen.
Ja genau. Gib ihm das Recht Indexe anzulegen, dann wirds auch klappen.
Grüße,
Heiko
Zitat von: DS_Starter am 30 Januar 2019, 11:27:24
Hi Robert,
gerne :)
Ja genau. Gib ihm das Recht Indexe anzulegen, dann wirds auch klappen.
Grüße,
Heiko
Habs gerade über PHPmyadmin angelegt.
config check sagt nun alles okay.