Hi,
habe den Persidenceservice umgestellt auf JDBC mit einer MariaDB. Hat auch alles gut geklappt bis auf ein paar Errorlogs zu Items, die es gar nicht mehr gibt! Habe auch die JSONDB Dateien (/var/lib/openhab/jsondb/*) geprüft. Da stehen die Items nicht mehr mit drin. Wo könnte diese Registierung noch enthalten sein?
Kann man die alten Werte aus den rrd Datein zu den Items auch irgenwie in die neu MariaDB migrieren?
Gruß
Harry
JDBC::query: unable to get item for itemName
-
- Beiträge: 3
- Registriert: 15. Mär 2023 07:49
JDBC::query: unable to get item for itemName
Ich nehme an, die Meldung kommt immer mal wieder?
Du kannst schauen, ob es in den Tiefen der Konfiguration noch Leichen gibt.
Der "einfachste" Weg:
Falls es irgendwo in der Konfiguration eine Datei gibt, in der die Itemnamen vorkommen, wird die bash Dir so die Dateinamen ausgeben.
Wenn Du fündig wirst, musst Du weiter schauen, um welche Dateien es sich handelt und die Überreste (im Zweifel sehr vorsichtig) entfernen.
Sofern die Reste nicht im /etc/-Zweig liegen, musst Du dazu vor dem Speichern der Dateien unbedingt openHAB beenden, weil nur im /etc/-Zweig eine Überwachung der Dateien stattfindet.
Da es sich dabei ganz schnell um eine Operation am offenen Herzen handelt, solltest Du die betreffenden Dateien unbedingt zuerst sichern, bevor Du etwas daran änderst.
Gehe zur vollständigen AntwortDu kannst schauen, ob es in den Tiefen der Konfiguration noch Leichen gibt.
Der "einfachste" Weg:
Code: Alles auswählen
find /etc/openhab/ -exec grep -i 'PowefoxaktuelleWerte_Einspeisung' /dev/null {} \;
find /var/lib/openhab/ -exec grep -i 'PowefoxaktuelleWerte_Einspeisung' /dev/null {} \;
find /etc/openhab/ -exec grep -i 'Zaehler_aktuellerVerbrauch' /dev/null {} \;
find /var/lib/openhab/ -exec grep -i 'Zaehler_aktuellerVerbrauch' /dev/null {} \;
Wenn Du fündig wirst, musst Du weiter schauen, um welche Dateien es sich handelt und die Überreste (im Zweifel sehr vorsichtig) entfernen.
Sofern die Reste nicht im /etc/-Zweig liegen, musst Du dazu vor dem Speichern der Dateien unbedingt openHAB beenden, weil nur im /etc/-Zweig eine Überwachung der Dateien stattfindet.
Da es sich dabei ganz schnell um eine Operation am offenen Herzen handelt, solltest Du die betreffenden Dateien unbedingt zuerst sichern, bevor Du etwas daran änderst.

openHAB 4.0.0 Build #3368 auf Ubuntu 22 mit MTTQ Mosquito und MariaDB
- udo1toni
- Beiträge: 15247
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: JDBC::query: unable to get item for itemName
Willkommen im openHAB Forum!
Die JDBC Persistence erzeugt automatisch für jedes zu persistierende Item eine Tabelle in der verlinkten Datenbank. Der Fehler ist etwas vage, besser wäre, einmal die betreffenden Logzeilen komplett zu sehen (bitte als Code einfügen, nicht als normalen Text, keinesfalls als Bild).
Hast Du eine neue Datenbank erzeugt?
Bezüglich Datenübernahme aus der rrd4j: das ist eher schwierig, weil rrd ganz anders arbeitet als eine "gewöhnliche" SQL Datenbank. Es gibt natürlich Tools, mit denen Du die rrd Dateien öffnen kannst. Du kannst dann die Werte auch herauskopieren und in eine bestehende Tabelle einer anderen Datenbank einfügen. DAs Problem ist aber, dass rrd4j verschiedene "Behälter" hat, in denen die Daten landen. Je älter die Daten, desto gröber die zeitliche Auflösung. Das bedeutet: rrd4j errechnet für einen alten Block Daten mit hoher zeitlicher Auflösung den Durchschnittswert und speichert ihn im Behälter mit der nächstgröberen zeitlichen Auflösung ab. Anschließend wird der Block gelöscht (bzw. mit neuen Daten überschrieben)
Auf diese Weise bleibt die Dateigröße immer gleich, aber je älter die Daten sind, desto ungenauer ist die Darstellung.
In MariaDB (oder anderen gleichartigen Datenbanken) ist dieses Verhalten nicht vorgesehen, man könnte es natürlich mit entsprechenden Stored Procedures nachrüsten, aber die Datenbank wäre damit vermutlich ganz gut beschäftigt, weil halt nicht dafür ausgelegt. Packst Du nun solche Daten in die Datenbank rein, so wird es zumindest ein unerwartetes Verhalten geben.
Die JDBC Persistence erzeugt automatisch für jedes zu persistierende Item eine Tabelle in der verlinkten Datenbank. Der Fehler ist etwas vage, besser wäre, einmal die betreffenden Logzeilen komplett zu sehen (bitte als Code einfügen, nicht als normalen Text, keinesfalls als Bild).
Hast Du eine neue Datenbank erzeugt?
Bezüglich Datenübernahme aus der rrd4j: das ist eher schwierig, weil rrd ganz anders arbeitet als eine "gewöhnliche" SQL Datenbank. Es gibt natürlich Tools, mit denen Du die rrd Dateien öffnen kannst. Du kannst dann die Werte auch herauskopieren und in eine bestehende Tabelle einer anderen Datenbank einfügen. DAs Problem ist aber, dass rrd4j verschiedene "Behälter" hat, in denen die Daten landen. Je älter die Daten, desto gröber die zeitliche Auflösung. Das bedeutet: rrd4j errechnet für einen alten Block Daten mit hoher zeitlicher Auflösung den Durchschnittswert und speichert ihn im Behälter mit der nächstgröberen zeitlichen Auflösung ab. Anschließend wird der Block gelöscht (bzw. mit neuen Daten überschrieben)
Auf diese Weise bleibt die Dateigröße immer gleich, aber je älter die Daten sind, desto ungenauer ist die Darstellung.
In MariaDB (oder anderen gleichartigen Datenbanken) ist dieses Verhalten nicht vorgesehen, man könnte es natürlich mit entsprechenden Stored Procedures nachrüsten, aber die Datenbank wäre damit vermutlich ganz gut beschäftigt, weil halt nicht dafür ausgelegt. Packst Du nun solche Daten in die Datenbank rein, so wird es zumindest ein unerwartetes Verhalten geben.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 3
- Registriert: 15. Mär 2023 07:49
Re: JDBC::query: unable to get item for itemName
Hi Udo,
danke für die Antwort! Ja ich habe eine komplett neue Datenbank angelegt und einen speziellen openhab User mit vollen Rechten zugeordnet. Funktioniert auch einwandfrei mit allen existierenden Items!
Hier der LOG von den fehlenden:
wie bereits beschrieben, gibt es diese Items eigentlich nicht mehr!
Gruß
Harry
danke für die Antwort! Ja ich habe eine komplett neue Datenbank angelegt und einen speziellen openhab User mit vollen Rechten zugeordnet. Funktioniert auch einwandfrei mit allen existierenden Items!
Hier der LOG von den fehlenden:
Code: Alles auswählen
2023-03-16 07:42:25.152 [ERROR] [jdbc.internal.JdbcPersistenceService] - JDBC::query: unable to get item for itemName: 'PowefoxaktuelleWerte_Einspeisung'. Ignore and give up!
2023-03-16 07:42:25.203 [ERROR] [jdbc.internal.JdbcPersistenceService] - JDBC::query: unable to get item for itemName: 'Zaehler_aktuellerVerbrauch'. Ignore and give up!
2023-03-16 07:42:25.460 [ERROR] [jdbc.internal.JdbcPersistenceService] - JDBC::query: unable to get item for itemName: 'PowefoxaktuelleWerte_Einspeisung'. Ignore and give up!
2023-03-16 07:42:25.511 [ERROR] [jdbc.internal.JdbcPersistenceService] - JDBC::query: unable to get item for itemName: 'Zaehler_aktuellerVerbrauch'. Ignore and give up!
Gruß
Harry
openHAB 4.0.0 Build #3368 auf Ubuntu 22 mit MTTQ Mosquito und MariaDB
- udo1toni
- Beiträge: 15247
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: JDBC::query: unable to get item for itemName
Ich nehme an, die Meldung kommt immer mal wieder?
Du kannst schauen, ob es in den Tiefen der Konfiguration noch Leichen gibt.
Der "einfachste" Weg:
Falls es irgendwo in der Konfiguration eine Datei gibt, in der die Itemnamen vorkommen, wird die bash Dir so die Dateinamen ausgeben.
Wenn Du fündig wirst, musst Du weiter schauen, um welche Dateien es sich handelt und die Überreste (im Zweifel sehr vorsichtig) entfernen.
Sofern die Reste nicht im /etc/-Zweig liegen, musst Du dazu vor dem Speichern der Dateien unbedingt openHAB beenden, weil nur im /etc/-Zweig eine Überwachung der Dateien stattfindet.
Da es sich dabei ganz schnell um eine Operation am offenen Herzen handelt, solltest Du die betreffenden Dateien unbedingt zuerst sichern, bevor Du etwas daran änderst.
Du kannst schauen, ob es in den Tiefen der Konfiguration noch Leichen gibt.
Der "einfachste" Weg:
Code: Alles auswählen
find /etc/openhab/ -exec grep -i 'PowefoxaktuelleWerte_Einspeisung' /dev/null {} \;
find /var/lib/openhab/ -exec grep -i 'PowefoxaktuelleWerte_Einspeisung' /dev/null {} \;
find /etc/openhab/ -exec grep -i 'Zaehler_aktuellerVerbrauch' /dev/null {} \;
find /var/lib/openhab/ -exec grep -i 'Zaehler_aktuellerVerbrauch' /dev/null {} \;
Wenn Du fündig wirst, musst Du weiter schauen, um welche Dateien es sich handelt und die Überreste (im Zweifel sehr vorsichtig) entfernen.
Sofern die Reste nicht im /etc/-Zweig liegen, musst Du dazu vor dem Speichern der Dateien unbedingt openHAB beenden, weil nur im /etc/-Zweig eine Überwachung der Dateien stattfindet.
Da es sich dabei ganz schnell um eine Operation am offenen Herzen handelt, solltest Du die betreffenden Dateien unbedingt zuerst sichern, bevor Du etwas daran änderst.

openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 3
- Registriert: 15. Mär 2023 07:49
Re: JDBC::query: unable to get item for itemName
super! Hat mir sehr geholfen! Habe noch Leichen in den Dateien:
/var/lib/openhab/jsondb/uicomponents_ui_page.json
/var/lib/openhab/jsondb/org.openhab.core.thing.link.ItemChannelLink.json
Vorgehen:
Danke Dir!!!!
/var/lib/openhab/jsondb/uicomponents_ui_page.json
/var/lib/openhab/jsondb/org.openhab.core.thing.link.ItemChannelLink.json
Vorgehen:
- 1. Stop von openhab
2. Dateien bearbeitet
3. Startvon openhab

Danke Dir!!!!
openHAB 4.0.0 Build #3368 auf Ubuntu 22 mit MTTQ Mosquito und MariaDB
- udo1toni
- Beiträge: 15247
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: JDBC::query: unable to get item for itemName
Prima 

openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet