jdbc driver

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
goerdi
Beiträge: 127
Registriert: 21. Dez 2019 23:44
Answers: 1

jdbc driver

Beitrag von goerdi »

Hallo !

wie installiere ich den Java Treiber für den jdbc connector zu mariadb ?
Unter ubuntu 24.04 hab ich schon libmariadb-java installiert.... ich bekomme aber beim start immer noch einen Fehlermeldung vom jdbc service

Code: Alles auswählen

2025-12-07 22:34:59.453 [ERROR] [jdbc.internal.JdbcPersistenceService] - bundle org.openhab.persistence.jdbc:5.0.3 (351)[org.openhab.persistence.jdbc.internal.JdbcPersistenceService(451)] : The activate method has thrown an exception
java.lang.NoClassDefFoundError: Could not initialize class org.openhab.persistence.jdbc.internal.db.JdbcMariadbDAO
        at org.openhab.persistence.jdbc.internal.JdbcConfiguration.setDBDAOClass(JdbcConfiguration.java:267) ~[?:?]
        at org.openhab.persistence.jdbc.internal.JdbcConfiguration.updateConfig(JdbcConfiguration.java:129) ~[?:?]
        at org.openhab.persistence.jdbc.internal.JdbcConfiguration.<init>(JdbcConfiguration.java:80) ~[?:?]
        at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.updateConfig(JdbcPersistenceService.java:272) ~[?:?]
        at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.activate(JdbcPersistenceService.java:100) ~[?:?]
Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.NoClassDefFoundError: org/mariadb/jdbc/Driver [in thread "Start Level: Equinox Container: a5c7b0b9-eee8-40a8-bb23-7fabf5aed22b"]
        at org.openhab.persistence.jdbc.internal.db.JdbcMariadbDAO.<clinit>(JdbcMariadbDAO.java:35) ~[?:?]
2025-12-07 22:34:59.456 [WARN ] [ernal.PersistenceServiceRegistryImpl] - bundle org.openhab.core.persistence:5.0.3 (218)[org.openhab.core.persistence.internal.PersistenceServiceRegistryImpl(269)] : Could not get service from ref {org.openhab.core.persistence.PersistenceService, org.openhab.core.persistence.QueryablePersistenceService}={service.id=743, service.bundleid=351, service.scope=bundle, osgi.ds.satisfying.condition.target=(osgi.condition.id=true), user=openhab, url=jdbc:mariadb://192.168.63.254:3306/openhab, component.name=org.openhab.persistence.jdbc.internal.JdbcPersistenceService, service.config.label=JDBC Persistence Service, component.id=451, service.config.factory=false, password=openhab, service.config.category=persistence, service.config.description.uri=persistence:jdbc, service.pid=[org.openhab.jdbc, org.openhab.jdbc]}
2025-12-07 22:34:59.456 [WARN ] [ernal.PersistenceServiceRegistryImpl] - bundle org.openhab.core.persistence:5.0.3 (218)[org.openhab.core.persistence.internal.PersistenceServiceRegistryImpl(269)] : DependencyManager : invokeBindMethod : Service not available from service registry for ServiceReference {org.openhab.core.persistence.PersistenceService, org.openhab.core.persistence.QueryablePersistenceService}={service.id=743, service.bundleid=351, service.scope=bundle, osgi.ds.satisfying.condition.target=(osgi.condition.id=true), user=openhab, url=jdbc:mariadb://192.168.63.254:3306/openhab, component.name=org.openhab.persistence.jdbc.internal.JdbcPersistenceService, service.config.label=JDBC Persistence Service, component.id=451, service.config.factory=false, password=openhab, service.config.category=persistence, service.config.description.uri=persistence:jdbc, service.pid=[org.openhab.jdbc, org.openhab.jdbc]} for reference PersistenceService

Gruss Gerd

Benutzeravatar
udo1toni
Beiträge: 15510
Registriert: 11. Apr 2018 18:05
Answers: 250
Wohnort: Darmstadt

Re: jdbc driver

Beitrag von udo1toni »

Was meinst Du mit Treiber?
In openHAB musst Du lediglich das jdbc(MariaDB) Persistence Addon installieren.
Außerdem muss natürlich irgendwo noch MariaDB installiert werden (als Server).
MySQL (und ebenso MariaDB) ist per Default auf das loopback Device eingeschränkt. Falls MariaDB also nicht auf dem gleichen Rechner läuft, wirst Du in /etc/mysql/mariadb.conf.d/50-server.cnf die bind-address auf 0.0.0.0 setzen müssen.
openHAB5.0.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox 9.1.2 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte

goerdi
Beiträge: 127
Registriert: 21. Dez 2019 23:44
Answers: 1

Re: jdbc driver

Beitrag von goerdi »

Hi !
das hab ich ja jetzt gemacht (bind address) trotzdem wirft es beim Start nen Fehler (Siehe Screenshot)

Ciao Gerd
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
udo1toni
Beiträge: 15510
Registriert: 11. Apr 2018 18:05
Answers: 250
Wohnort: Darmstadt

Re: jdbc driver

Beitrag von udo1toni »

Bite keine Screenshots, sondern immer so wie oben im ersten Posting.
Der Screenshot zeigt keine interessanten Einzelheiten, man sieht nur, dass eine Exception aufgetreten ist (nun ja, und wo), aber nicht, welche Exception und warum.

Ansonsten kann ich nur empfehlen, kein Ubuntu zu nutzen, Ubuntu ist bekannt für Probleme im Zusammenhang mit openHAB.
openHAB5.0.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox 9.1.2 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte

goerdi
Beiträge: 127
Registriert: 21. Dez 2019 23:44
Answers: 1

Re: jdbc driver

Beitrag von goerdi »

Hi !
:-) ok ich nutze schon von anbeginn ubuntu :-) aber egal... jetzt geht es, alledings werden nicht all in der jdbc.persist übernommen. ich habe dort z.B. all items die mit RAIN* beginne angegeben , aber die werden nicht in die Datenbank übernommen.
der Treiber startet

Code: Alles auswählen

2025-12-08 20:03:03.709 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection: Driver is available::Yank setupDataSource
2025-12-08 20:03:04.140 [INFO ] [internal.ModuleHandlerFactoryStarter] - WebPushNotificationModuleHandlerFactory started by ModuleHandlerFactoryStarter
und folgende Optionen dinf in jdbc.cfg gesetzt

Code: Alles auswählen

tableUseRealItemNames=true
rebuildTableNames=false
Gruss Gerd

Benutzeravatar
udo1toni
Beiträge: 15510
Registriert: 11. Apr 2018 18:05
Answers: 250
Wohnort: Darmstadt

Re: jdbc driver

Beitrag von udo1toni »

Nope. Es gibt keine Joker für die Itemauswahl.

RAIN* bedeutet nicht "persistiere alle Items, deren Name mit RAIN beginnt".
Stattdessen bedeutet es: "Persistiere alle Items, die Member der Gruppe RAIN sind" (ohne das Group Item selbst, nur die unmittelbaren Member)
openHAB5.0.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox 9.1.2 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte

goerdi
Beiträge: 127
Registriert: 21. Dez 2019 23:44
Answers: 1

Re: jdbc driver

Beitrag von goerdi »

Hi !

Ok klar soweit... kann ich auch innerhalb einer Gruppe verschiedene persisten rules haben (zeitliche Erfassung)?
z.b. alle aus einer Gruppe jede Stunde speichern aber eines alle 10 minuten ? sprich wird das im first oder last match abgearbeitet ?

Ciao Gerd

Benutzeravatar
udo1toni
Beiträge: 15510
Registriert: 11. Apr 2018 18:05
Answers: 250
Wohnort: Darmstadt

Re: jdbc driver

Beitrag von udo1toni »

Du kannst einzelne Items aus einer Gruppe von Items ausschließen (falls bestimmte Strategies nicht angewendet werden sollen) und auch einzelne Items (oder Gruppenmember...) zusätzlich mit weiteren Strategies anlegen. Es kann höchstens passieren, dass die Datenpunkte dann unregelmäßig angelegt werden, z.B. (alte Schreibweise):

Code: Alles auswählen

Strategies {
    everyMinute    : "0    * * * * ?"
    every15Minutes : "5 0/15 * * * ?"
}
Items {
    gTemp*,!Temp3,Temp4          : strategy = every15Minutes
    Temp2,Temp3                  : strategy = everyMinute
}
In der Gruppe gTemp sollen die Items Temp1, Temp2 und Temp3 enthalten sein. Temp4 ist hingegen kein Member der Gruppe.

Fünf Sekunden nach jeder vollen Viertelstunde werden die Items Temp1, Temp2 und Temp4 persistiert (Erstere wegen der Gruppenzugehörigkeit, Letzteres weil separat zugeordnet. Temp3 wurde durch ein vorangestelltes ! ausgeschlossen)
Jeweils zur vollen Minute werden die Items Temp2 und Temp3 persistiert.

Das Item Temp2 bekommt also alle fünfzehn Minuten einen zusätzlichen Datenpunkt, fünf Sekunden nach dem minütlichen Datenpunkt.
Natürlich kann man die einzelnen Strategies auch auf gleiche Sekunden legen, ich habe es aber so gestaltet, weil ich damit Lastspitzen vermeide (jedenfalls bilde ich mir das ein... :lol: )

Ich bin mir nicht sicher, ob der Persistence Service beim Zusammentreffen mehrerer Persist-Ereignisse für das selbe Item nur einen Datenpunkt generiert oder evtl. doch mehrere, das müsste man ausprobieren/im Source-Code nachschauen/den Entwickler fragen...
openHAB5.0.3 stable in einem Debian-Container (trixie, OpenJDK 21 headless runtime - LXC, 4 Kerne, 3 GByte RAM)
Hostsystem Proxmox 9.1.2 - AMD Ryzen 5 3600 6 Kerne, 12 Threads - 64 GByte RAM - ZFS Pools: Raid Z1, 3 x 20 TB HDD -> 40 TByte und Raid Z0-Mirrored 4 x 1 TByte NVMe -> 2 TByte

goerdi
Beiträge: 127
Registriert: 21. Dez 2019 23:44
Answers: 1

Re: jdbc driver

Beitrag von goerdi »

Hi !

OK Danke

Gruss Gerd

Antworten