update auf openhab 3 und persistence ohne funktion

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

alteshaus
Beiträge: 6
Registriert: 20. Dez 2021 14:53
Answers: 0

update auf openhab 3 und persistence ohne funktion

Beitrag von alteshaus »

hallo,

ich habe mich nun fast einen ganzen tag mit dem update von OH2.5 auf OH3.2 beschäftigt.

ausgangszustand ist ein win10 system mit OH2.5 (vor langer zeit mal OH1.x) mit lokaler mariadb (von xampp).
sämtliche OH1 addons wurden schon im frühjahr entfernt, es lief recht gut.

also neuen ordner angelegt OH3 dort ein, und java11 in einen ordner.

dann den path und die java_home angepasst und OH3 das erste mal gestartet. -> alles ok, wieder beendet

dann die config der services von OH2 nach OH3 und neu gestartet. -> alles ok, wieder beendet

nun die restliche config von OH2 nach OH3, dabei die mysql.persist in jdbc.persist umbenannt und die nötigen einstellung in der jdbc.cfg gemacht.

sowie diese parameter gesetzt:

Code: Alles auswählen

url = jdbc:mariadb://127.0.0.1:3306/openhab3?useSSL=false
tableNamePrefix=Item
tableUseRealItemNames=false
tableIdDigitCount=0
nun nochmal gestartet. -> ergebniss.. auf die datenbank kann nicht zugegriffen werden.

im log steht:

Code: Alles auswählen

 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection: Driver is available::Yank setupDataSource
und jeden menge davon:

Code: Alles auswählen

 [WARN ] [org.openhab.core.items.GenericItem  ] - failed notifying listener 'org.openhab.core.persistence.internal.PersistenceManagerImpl@ff7fa85' about state update of item SOL_ve2_pvu: 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:72) ~[?:?]
	at org.openhab.persistence.jdbc.internal.JdbcMapper.checkDBAccessability(JdbcMapper.java:211) ~[?:?]
	at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:136) ~[?:?]
	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:834) [?:?]

über die console habe ich das versucht:

Code: Alles auswählen

openhab> list -s | grep jdbc
243 │ Active │  80 │ 3.2.0                 │ org.openhab.persistence.jdbc
272 │ Active │  80 │ 1.4.6.0               │ org.mariadb.jdbc

ich habe das ganze nun auf einem 2. rechner getestet mit dem selben ergebniss.
außerdem habe ich mal eine neue leere DB angelegt, selbes ergebniss. (es wird von OH3 keine tabelle erzeugt und kein item angelegt.)
dann habe ich mal die xampp DB deaktiviert und die richtige maria-db installiert, selbes ergebniss.

ich habe die rechte der benutzer in den datenbanken auf 127.0.0.1 sowie % und localhost ausgedehnt, selbses ergebniss.

in einem anderen forum habe ich gefunden, das es wohl derzeit weder mit mysql noch mit mariadb möglich ist über jdbc auf die datenbank zuzugreifen.
im fall von mysql scheint das tatsächlich der fall zu sein, da weder der treiber aktiv wird und bei dem versuch im log dieses erscheint:

Code: Alles auswählen

[WARN ] [.zaxxer.hikari.util.DriverDataSource] - Registered driver with driverClassName=com.mysql.jdbc.Driver was not found, trying direct instantiation.

wache ich etwas falsch ?
geht das unter windows möglicher weise nicht ?
hat jemand einen tipp oder gar eine lösung für mich ?

danke vorab
a.h.

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

Re: update auf openhab 3 und persistence ohne funktion

Beitrag von udo1toni »

Es gibt diverse Unterschiede zwischen jdbc und mysql Persistence. Beide lassen sich aber direkt über die UI konfigurieren, was auch der bevorzugte Weg sein sollte. Ich bin mir nicht sicher, wie die .cfg Dateien da genau ins Spiel kommen.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

alteshaus
Beiträge: 6
Registriert: 20. Dez 2021 14:53
Answers: 0

Re: update auf openhab 3 und persistence ohne funktion

Beitrag von alteshaus »

ich war es bisher gewohnt, bei jedem OH update erstmal alles zu löschen dann nur meinen services ordner in die conf zu packen und dann zu starten, dann wieder zu beenden und die restlichen dateien in die conf zu packen und zu starten.
das ist quasi immer wie eine neusinstallation, lief bisher recht gut so.

daher ist es aus meiner sicht auch ratsam so viel wie möglich mit den dateien zu konfigurieren.
alles was man über die UI konfiguriert ist bei dieser methode dann wieder verschwunden.

ich bin halt den langen weg von OH1.x gekommen, so wie meine dateien.

ich werde mal einen versuch über die UI machen, alles andere hat ja eh nicht funktioniert.

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: update auf openhab 3 und persistence ohne funktion

Beitrag von int5749 »

alteshaus hat geschrieben: 20. Dez 2021 16:38 ich war es bisher gewohnt, bei jedem OH update erstmal alles zu löschen dann nur meinen services ordner in die conf zu packen und dann zu starten, dann wieder zu beenden und die restlichen dateien in die conf zu packen und zu starten.
das ist quasi immer wie eine neusinstallation, lief bisher recht gut so.

.....
Du benutzt schon richtig "lief bisher ..."

Mit OH 3 gibt es diese cfg Dateien für Services nicht mehr (zumindest nicht mehr wie gewohnt) und diese müssen über die MainUI konfiguriert werden.
Die Konfiguration der Rules/Things/Items/Persist kann dann weiter wie gewohnt erfolgen.

Heißt aber auch: Bei eine Neuinstallation müssen eben genau diese Services neu installiert und konfiguriert werden.

Ein anderer guter Weg ist über "Backup" - Update via openHABian - und Restore nur im Fehlerfall ;-)
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

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

Re: update auf openhab 3 und persistence ohne funktion

Beitrag von udo1toni »

Ja, Der Punkt ist halt, dass die Konfiguration über UI die Dokumentation mit bringt.
User und Password hast Du in der jdbc.cfg gesetzt?
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

alteshaus
Beiträge: 6
Registriert: 20. Dez 2021 14:53
Answers: 0

Re: update auf openhab 3 und persistence ohne funktion

Beitrag von alteshaus »

ja user und pass hatte ich ja aus der funktionierenden mysql.cfg mit genommen.

die doku in der UI ist die selbe wie in der cfg datei, zumindest bei der jdbc.cfg

ich habe gerade erste tests auf dem testesystem mit konfig über die UI gemacht.
damit hat er die einträge in der DB angelegt.
obwohl da nichts anderes drinn steht als in den cfg dateien.

wenn man dann die cfg anlegt geht eas auch noch.
nun werde ich mal testen ob ich mit dieser cfg auf bei einer neu installation erfolgreich bin....

die einträge in der UI sind beim 1. mal schon ausgefüllt wenn eine cfg datei vorhanden ist.

es sieht so aus als würde OH beim start nach cfg dateien suchen und deren werte übernehmen.
sind diese nicht da verwendet OH bestehende werte.
diese müssen dann beim 1. mal über das UI eingetragen werden.

wo nun genau der unterschied ist muss ich noch ergründen.

was natürlich nicht hilfreich ist, ist das die namen der parameter nicht mehr im UI angezeigt werden, so wie es bei paperUI war.
damit wird eine fehlersuche nach falschen parameter fast unmöglich.

alteshaus
Beiträge: 6
Registriert: 20. Dez 2021 14:53
Answers: 0

Re: update auf openhab 3 und persistence ohne funktion

Beitrag von alteshaus »

so... kurzes update....

mit dieser cfg funktioniert das ganze mit einer leeren DB ohne config über das UI

Code: Alles auswählen

############################ JDBC Persistence Service ##################################
# I N S T A L L   J D B C   P E R S I S T E N C E   S E R V I C E 
#
# https://github.com/openhab/openhab/wiki/JDBC-Persistence
#
# Tested databases/url-prefix: jdbc:derby, jdbc:h2, jdbc:hsqldb, jdbc:mariadb, jdbc:mysql, jdbc:postgresql, jdbc:sqlite
# 
# derby, h2, hsqldb, sqlite can be embedded, 
# If no database is available it will be created, for example the url 'jdbc:h2:./testH2' creates a new DB in OpenHab Folder. 
#
# Create new database, for example on a MySQL-Server use: 
# CREATE DATABASE 'yourDB' CHARACTER SET utf8 COLLATE utf8_general_ci;

# D A T A B A S E  C O N F I G
# Some URL-Examples, 'service' identifies and activates internally the correct jdbc driver.
# required database url like 'jdbc:<service>:<host>[:<port>;<attributes>]'
# url=jdbc:derby:./testDerby;create=true
# url=jdbc:h2:./testH2
# url=jdbc:hsqldb:./testHsqlDb
# url=jdbc:mariadb://192.168.0.1:3306/testMariadb
# url=jdbc:mysql://192.168.0.1:3306/testMysql
# url=jdbc:postgresql://192.168.0.1:5432/testPostgresql
# url=jdbc:sqlite:./testSqlite.db
url=jdbc:mariadb://127.0.0.1:3306/openhab3

# required database user
user=openhabuser

# required database password
password=lölölölöllölölölö

# E R R O R   H A N D L I N G
# optional when Service is deactivated (optional, default: 0 -> ignore) 
#errReconnectThreshold=

# I T E M   O P E R A T I O N S
# optional tweaking SQL datatypes
# see: https://mybatis.github.io/mybatis-3/apidocs/reference/org/apache/ibatis/type/JdbcType.html   
# see: http://www.h2database.com/html/datatypes.html
# see: http://www.postgresql.org/docs/9.3/static/datatype.html
# defaults:
#sqltype.CALL          =   VARCHAR(200)
#sqltype.COLOR         =   VARCHAR(70)
#sqltype.CONTACT       =   VARCHAR(6)
#sqltype.DATETIME      =   DATETIME
#sqltype.DIMMER        =   TINYINT
#sqltype.LOCATION      =   VARCHAR(30)
#sqltype.NUMBER        =   DOUBLE
#sqltype.ROLLERSHUTTER =   TINYINT
#sqltype.STRING        =   VARCHAR(65500)
#sqltype.SWITCH        =   VARCHAR(6)


sqltype.STRING        =   VARCHAR(2000)

# For Itemtype "Number" default decimal digit count (optional, default: 3) 
#numberDecimalcount=

# T A B L E   O P E R A T I O N S
# Tablename Prefix String (optional, default: "item") 
# for Migration from MYSQL-Bundle set to 'Item'.
tableNamePrefix=Item

# Tablename Prefix generation, using Item real names or "item" (optional, default: false -> "item") 
# If true, 'tableNamePrefix' is ignored.
tableUseRealItemNames=false

# Tablename Suffix length (optional, default: 4 -> 0001-9999) 
# for Migration from MYSQL-Bundle set to 0.
tableIdDigitCount=0

# Rename existing Tables using tableUseRealItemNames and tableIdDigitCount (optional, default: false) 
# USE WITH CARE! Deactivate after Renaming is done!
# rebuildTableNames=false

# D A T A B A S E  C O N N E C T I O N S
# Some embeded Databases can handle only one Connection (optional, default: configured per database in packet org.openhab.persistence.jdbc.db.* )
# see: https://github.com/brettwooldridge/HikariCP/issues/256
# jdbc.maximumPoolSize = 1
# jdbc.minimumIdle = 1

# T I M E K E E P I N G
# (optional, default: false) 
#enableLogTime=true
mein fehler war vermutlich das ich statt:

url=jdbc:mariadb://127.0.0.1:3306/openhab3

das hier drinn hatte:

url=jdbc:mariadb://127.0.0.1:3306/openhab3?useSSL=false


nun habe ich aber ein neues problem.

in der DB wird der prefix ignoriert.
die tabellen werden nun mit dem namen "item1" statt "Item1" angelegt.

sowohl in der cfg als auch in der UI wird das richtig mit großbuchstaben angezeigt.
dennoch sind die tabellen mit kleinbuchstaben angelegt.

hat dazu jemand erfahrungswerte ?

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

Re: update auf openhab 3 und persistence ohne funktion

Beitrag von udo1toni »

Da bin ich leider etwas überfragt.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

alteshaus
Beiträge: 6
Registriert: 20. Dez 2021 14:53
Answers: 0

Re: update auf openhab 3 und persistence ohne funktion

Beitrag von alteshaus »

so ich habe den fehler nun entgültig gefunden...

es war nicht wie ursprünglich angenommen der "?useSSL=false" ausdruck in der url sondern der reconnect parameter in der jdbc.cfg

hier hatte ich "reconnectCnt=1" drinn stehen.

damit wird der fehler im post 1 erzeugt.

lässt man diesen parameter von anfang an weg ist alles OK.
oder man setzt ihn explizit auf 0 (null), dann geht es auch.
auch mit anderen werten z.b. 3 oder 100 bekommt man das fehlerhafter ergebniss.

es hatte sicher seinen grund das dieser parameter nicht in der cfg oder der UI nethalten ist.


zum thema prefix ist mir gerade aufgefallen das auch die alte datenbank tabellen mit kleinen buschataben hat.
so gesehen ist das also ok.
warum die doku (cfg und UI) an der stelle großbuchstaben beeinhaltet ist natürlich irreführend.


ich danke euch für die zeitnahe unterstüzung.

beste grüße
a.h.

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

Re: update auf openhab 3 und persistence ohne funktion

Beitrag von udo1toni »

alteshaus hat geschrieben: 20. Dez 2021 19:14 zum thema prefix ist mir gerade aufgefallen das auch die alte datenbank tabellen mit kleinen buschataben hat.
so gesehen ist das also ok.
warum die doku (cfg und UI) an der stelle großbuchstaben beeinhaltet ist natürlich irreführend.
Soweit ich weiß, sind die Namen der Tabellen nicht case sensitive, bzw. auf SQL-Ebene spielt es keine Rolle. Aber natürlich wäre es schön, wenn die Tabellennamen exakt wie gewünscht erzeugt werden, CamelCase ist auch in Datenbanken nicht unüblich.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten