Ankündigung
Einklappen
Keine Ankündigung bisher.
Openhab 3 und Mariadb
Einklappen
X
-
Momentan fällt mir dazu leider nicht wirklich etwas ein.
Grundsätzlich habe ich bisher immer mit einer "jungfräulichen" Datenbank gestartet, wenn ich openHAB neu aufgesetzt habe. speziell bei MariaDB habe ich dann die alten Daten gedumpt und anschließend gedropt, Selbst wenn man die Itemnamen identisch wählt, wird eine neue Instanz eventuell erst mal versuchen, neue Tabellen anzulegen. Und vielleicht geht das dann schief, wenn die Tabellen schon vorhanden sind.
Dir auch ein Frohes Fest!
Kommentar
-
Hallo noch einmal,
ich habe jetzt die DB noch einmal neu installiert.
offensichtlich auch wieder ohne Erfolg.
hier die Meldungen aus dem Logfile ev sagt es dem einen oder anderem etwas.
Code:2023-01-09 19:56:23.469 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection: Driver is available::Yank setupDataSource 2023-01-09 19:56:23.692 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::logTime: 'pingDB': afterAccess = 222 ms timeAverage50 = 222 ms timeAverage100 = 222 ms timeAverage200 = 222 ms afterAccessMin = 222 ms afterAccessMax = 222 ms 1000Statements = 0 sec statementCount = 1 2023-01-09 19:56:26.517 [WARN ] [org.openhab.core.items.GenericItem ] - failed notifying listener 'org.openhab.core.persistence.internal.PersistenceManagerImpl@11b1741' about state update of item SNMP_Status_Batterielaufzeit: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap') java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap') at org.openhab.persistence.jdbc.db.JdbcMariadbDAO.doPingDB(JdbcMariadbDAO.java:92) ~[?:?] at org.openhab.persistence.jdbc.internal.JdbcMapper.pingDB(JdbcMapper.java:78) ~[?:?] at org.openhab.persistence.jdbc.internal.JdbcMapper.checkDBAccessability(JdbcMapper.java:248) ~[?:?] at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.internalStore(JdbcPersistenceService.java:149) ~[?:?] at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:135) ~[?:?] at org.openhab.core.persistence.internal.PersistenceManagerImpl.handleStateEvent(PersistenceManagerImpl.java:152) ~[?:?] at org.openhab.core.persistence.internal.PersistenceManagerImpl.stateChanged(PersistenceManagerImpl.java:473) ~[?:?] at org.openhab.core.items.GenericItem.lambda$1(GenericItem.java:259) ~[?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] at java.lang.Thread.run(Thread.java:829) [?:?] 2023-01-09 19:56:26.560 [WARN ] [org.openhab.core.items.GenericItem ] - failed notifying listener 'org.openhab.core.persistence.internal.PersistenceManagerImpl@11b1741' about state update of item SNMP_Status_Datum_Selbsttest: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap') java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap') at org.openhab.persistence.jdbc.db.JdbcMariadbDAO.doPingDB(JdbcMariadbDAO.java:92) ~[?:?] at org.openhab.persistence.jdbc.internal.JdbcMapper.pingDB(JdbcMapper.java:78) ~[?:?] at org.openhab.persistence.jdbc.internal.JdbcMapper.checkDBAccessability(JdbcMapper.java:248) ~[?:?] at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.internalStore(JdbcPersistenceService.java:149) ~[?:?] at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:135) ~[?:?] at org.openhab.core.persistence.internal.PersistenceManagerImpl.handleStateEvent(PersistenceManagerImpl.java:152) ~[?:?] at org.openhab.core.persistence.internal.PersistenceManagerImpl.stateChanged(PersistenceManagerImpl.java:473) ~[?:?] at org.openhab.core.items.GenericItem.lambda$1(GenericItem.java:259) ~[?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] at java.lang.Thread.run(Thread.java:829) [?:?]
Zuletzt geändert von Höhlenbär; 09.01.2023, 20:11.Gruß
Guido
Kommentar
-
Die jdbc.cfg wird normal über das UI konfiguriert. Deine jdbc.persist kann so nicht gehen, da müssen Items definiert werden; andernfalls landet alles im Default Persistence Service.
Strategies {
everyMinute : "0 * * * * ?"
everyfiveMinutes : "0 */5 * * * ?"
everyHour : "0 0 * * * ?"
everyDay : "0 0 0 * * ?"
}
Items {
knx_Heizung_Ferienwohnung_Schlafzimmer_Istwert : strategy = everyfiveMinutes
}
Kommentar
-
die jdbc.cfg wird mir im ui angezeigt und nach dem log gehe ich davon aus das auch die Verbindung zur Datenbank aufgebaut wird.
die persist hatte ich auf anraten von Udo erst einmal auf Eis gelegt. Mittlerweile steht dort wieder ein Item drin.
Allerdings wir nichts in die Datenbank geschrieben.
und ich weis immer noch nicht was diese Meldung aussagt.
Code:failed notifying listener 'org.openhab.core.persistence.internal.PersistenceManagerImpl@11b1741' about state update of item SNMP_Status_Batterielaufzeit:
ich werde deinen Rat folgen, und die cfg mal über das ui anlegen. mal sehen ob dies einen unterschied macht.Gruß
Guido
Kommentar
-
Das macht keinen Unterschied.
Code:2023-01-10 18:52:21.164 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection: Driver is available::Yank setupDataSource 2023-01-10 18:52:21.512 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::logTime: 'pingDB': afterAccess = 348 ms timeAverage50 = 348 ms timeAverage100 = 348 ms timeAverage200 = 348 ms afterAccessMin = 348 ms afterAccessMax = 348 ms 1000Statements = 0 sec statementCount = 1 2023-01-10 18:52:24.586 [WARN ] [org.openhab.core.items.GenericItem ] - failed notifying listener 'org.openhab.core.persistence.internal.PersistenceManagerImpl@c5e1ae9' about state update of item SNMP_Status_U_Eingang: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap') java.lang.ClassCastException: class java.lang.Integer cannot be cast to class java.lang.Long (java.lang.Integer and java.lang.Long are in module java.base of loader 'bootstrap') at org.openhab.persistence.jdbc.db.JdbcMariadbDAO.doPingDB(JdbcMariadbDAO.java:92) ~[?:?] at org.openhab.persistence.jdbc.internal.JdbcMapper.pingDB(JdbcMapper.java:78) ~[?:?] at org.openhab.persistence.jdbc.internal.JdbcMapper.checkDBAccessability(JdbcMapper.java:248) ~[?:?] at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.internalStore(JdbcPersistenceService.java:149) ~[?:?] at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:135) ~[?:?] at org.openhab.core.persistence.internal.PersistenceManagerImpl.handleStateEvent(PersistenceManagerImpl.java:152) ~[?:?] at org.openhab.core.persistence.internal.PersistenceManagerImpl.stateChanged(PersistenceManagerImpl.java:473) ~[?:?] at org.openhab.core.items.GenericItem.lambda$1(GenericItem.java:259) ~[?:?] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?] at java.lang.Thread.run(Thread.java:829) [?:?]
Gruß
Guido
Kommentar
-
Hallo,
ich bin jetzt ein Stück weiter gekommen.
Mit DBeaver konnte ich feststellen das es Probleme mit den Zugriff auf die Db gab. das habe ich beheben können.
Jetzt habe ich wieder versucht dort Items rein zu speichern. Sowohl mit dem Plug in Mysql als auch mit Mariadb.
Leider funktioniert dies nicht. Bei Mysql ist mir jetzt aufgefallen das diese Zeile im Log steht.
Code:2023-01-12 12:54:34.977 [WARN ] [.zaxxer.hikari.util.DriverDataSource] - Registered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation.
Jetzt die Frage, reicht es wenn das Plugin installiert wird, oder ist noch was nötig. Bisher habe ich nur das Plugin installieren müssen.
Gruß
Guido
Kommentar
-
Wenn Du den jdbcmariadb Persistence Service auswählst, bringt der alles Notwendige für eine Client-Verbindung zu einer MariaDB mit. Meiner erfahrung nach spielt die version dabei keine große Rolle, solange die DB nicht steinalt ist.
Aber noch mal von vorne: Hast Du eine neue Datenbank erzeugt? Hast Du einen User angelegt, der von der IP des openHAB Systems aus vollen Zugriff auf die Datenbank hat (voll in dem Sinne, dass dieser User Tabellen anlegen und ändern, sowie Daten schreiben und löschen darf)? Siehst Du im log der MariaDB, dass sich dieser User erfolgreich mit der Datenbank verbindet? Falls nein: Username und Passwort korrekt? Falls ja: Bitte lösche die jdbc.persist und starte openHAB neu. Legt openHAB nun bei jedem neuen changed Event eine Tabelle für das jeweilige Item an bzw., falls die Tabelle schon existiert, sollte openHAB einen Eintrag in der Tabelle erzeugen.
wie gesagt, alte daten kannst Du übernehmen, aber am besten zu Fuß. da der Zeitstempel als Index verwendet wird, ist auch das nachträgliche Einfügen von Datensätzen kein Problem, solange man die korrekte Quell-Zieltabellenzuordnung verwendet.
Kommentar
-
Halo Udo,
Ja ich habe einen neue Datenbank erzeugt
Ja ich habe einen user angelegt der Zugriff hat
Ich bin da leoder eingeschränt um zu sehen was auf der Synology passiert ich weiss eifach nicht wo ich ein ausführliches log finde.
Dafür habe ich das Tool DBeaver verwendet. damit kann ich sowohl mit dem Mariadb modul als auch it den SQL Modul eine Verbindung aufbauen
sehe die DB und kann darüber auch Tabellen hinzufügen.
Das mit der jdbc probiere ich nach dem Abend essen.
Danke
Gruß
Guido
Kommentar
Kommentar