Seite 1 von 1

OH 4.2.0 persistence mit mariadb

Verfasst: 6. Aug 2024 15:17
von Johannes911
seit dem Umzug auf den raspi werden keine Daten mehr in die Datenbank geschrieben. Meine bisherigen Versuche dies zu ändern waren alle erfolglos.

Das erste was ich von JDBC nach einem Neustart zu sehen bekomme ist:

Code: Alles auswählen

2024-08-06 14:55:56.013 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::openConnection: Driver is available::Yank setupDataSource
2024-08-06 14:55:57.196 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::formatTableNames: Finished updating 0 item table names
2024-08-06 14:55:57.198 [INFO ] [persistence.jdbc.internal.JdbcMapper] - JDBC::checkDBSchema: Rebuild complete, configure the 'rebuildTableNames' setting to 'false' to stop rebuilds on startup
was ja falsch ist, da in der Datenbank keine Tabellen / Namen geschrieben worden sind. Aus einem anderen Thema

Code: Alles auswählen

OH 4.0.4 Problem mit JDBC persistence (SQLite)
habe ich nachgesehen und ausgeführt:

Code: Alles auswählen

sudo systemctl stop openhab.service
sudo openhab-cli reset-ownership
sudo openhab-cli clean-cache
sudo systemctl start openhab.service
In der services/addons.cfg stehen nur diese Dinge drin

Code: Alles auswählen

automation = jsscripting
binding = knx, http, network, ntp, mqtt
transformation = jsonpath, regex
In der services/jdbc.cfg sind nur folgende Einträge aktiv:

Code: Alles auswählen

url=jdbc:mariadb://192.168.xxx.yyy:3306/openHAB
user=openhab_user
password=openhab_password
tableNamePrefix=Item
tableUseRealItemNames=true
itemsManageTable=item
# rebuildTableNames=true
in persistence/jdbc.persist:

Code: Alles auswählen

Strategies {
    everyMinute : "0 * * * * ?"                 // for rrd4j, we need a cron strategy
        default = everyChange,everyMinute
          }
auch wenn ich # rebuildTableNames=true aktiv schalte passiert auch bei einem Neustart leider nichts in der Datenbank.

fehlt noch irgend etwas in der jdbc.persist? Oder wo kann ich sonst noch ansetzen?

Re: OH 4.2.0 persistence mit mariadb

Verfasst: 6. Aug 2024 16:21
von udo1toni
Wenn Du eine jdbc.persist angelegt hast, musst Du dort auch die zu persistierenden Items auflisten (das war eine Zeit mal anders).
Sprich, es fehlen zumindest ein paar Zeilen:

Code: Alles auswählen

Items {
*               : strategy = default // alle Items mit der default Strategy persistieren
gPersistUpdate* : strategy = everyUpdate // alle Member der Gruppe gPersistUpdate _zusätzlich_ mit everyUpdate persistieren
meinItem        : strategy = restoreOnStartup // dieses Item zusätzlich zu default noch beim Start aus der Persistence wiederherstellen
}
Hier einfach mal beispielhafte Zeilen...

Re: OH 4.2.0 persistence mit mariadb

Verfasst: 6. Aug 2024 17:32
von Johannes911
das heißt wenn ich erst mal ALLE ITEMs persistieren will reicht dann:

Code: Alles auswählen

Strategies {
    everyMinute : "0 * * * * ?"                
        default = everyChange,everyMinute
          }
Items {
*               : strategy = default // alle Items mit der default Strategy persistieren
}
was leider fehlschlägt mit folgender Fehlermeldung:

Code: Alles auswählen

Configuration model 'jdbc.persist' has errors, therefore ignoring it: [6,30]: mismatched input 'default' expecting RULE_ID
geändert auf:

Code: Alles auswählen

Strategies {
    everyMinute : "0 * * * * ?"                 
        default = everyChange,everyMinute
           }
Items {
*               : strategy = everyChange,everyMinute // alle Items mit der default Strategy persistieren
}
hat dann funktioniert

Re: OH 4.2.0 persistence mit mariadb

Verfasst: 6. Aug 2024 17:47
von Johannes911
naja, es funktioniert nicht ganz wie erwartet.

Bei OH 3.x.x wurden die ITEMs genau unter Ihrem Namen in der Datenbank angelegt, jetzt ist hinten immer noch ein Unterstrich plus eine Zahl (wohl aufsteigend, es ist die ITEM-Id in der Datenbank) angehängt, sollte das nicht mit den Einträgen

Code: Alles auswählen

tableNamePrefix=Item
tableUseRealItemNames=true
itemsManageTable=item
ausgeschaltet werden?

Re: OH 4.2.0 persistence mit mariadb

Verfasst: 6. Aug 2024 18:55
von udo1toni
Johannes911 hat geschrieben: 6. Aug 2024 17:32 was leider fehlschlägt mit folgender Fehlermeldung:

Code: Alles auswählen

Configuration model 'jdbc.persist' has errors, therefore ignoring it: [6,30]: mismatched input 'default' expecting RULE_ID
geändert auf:
Ja, vollkommen korrekt... ich glaube, default wird verwendet, wenn gar keine strategy angegeben wird, also einfach nur der Itemname in der Zeile, aber ohne folgenden Doppelpunkt. Ich Schlafmütze...
Johannes911 hat geschrieben: 6. Aug 2024 17:47 jetzt ist hinten immer noch ein Unterstrich plus eine Zahl
Das ist spannend, sollte eigentlich nicht passieren, entweder Itemname ODER item_xxxx, aber nicht Itemname_xxxx.
Ich nutze keine Realnamen, keine Ahnung, ob es da eine Regression gibt. Vielleicht mal im englischen Forum suchen...

EDIT: gerade mal gesucht und direkt was gefunden, eigentlich sollte das seit Ende 2022 gefixt sein: https://community.openhab.org/t/jdbc-pe ... 0/40552/18

EDIT2: der Fix ist wohl noch offen...