Seite 1 von 1

jdbc driver

Verfasst: 7. Dez 2025 22:45
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

Re: jdbc driver

Verfasst: 8. Dez 2025 04:35
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.

Re: jdbc driver

Verfasst: 8. Dez 2025 08:08
von goerdi
Hi !
das hab ich ja jetzt gemacht (bind address) trotzdem wirft es beim Start nen Fehler (Siehe Screenshot)

Ciao Gerd

Re: jdbc driver

Verfasst: 8. Dez 2025 12:46
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.

Re: jdbc driver

Verfasst: 8. Dez 2025 20:06
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

Re: jdbc driver

Verfasst: 8. Dez 2025 23:56
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)

Re: jdbc driver

Verfasst: 9. Dez 2025 14:40
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

Re: jdbc driver

Verfasst: 9. Dez 2025 15:37
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...

Re: jdbc driver

Verfasst: 15. Dez 2025 15:01
von goerdi
Hi !

OK Danke

Gruss Gerd