JDBC::query: unable to get item for itemName

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
harry_wr
Beiträge: 3
Registriert: 15. Mär 2023 07:49
Answers: 0

JDBC::query: unable to get item for itemName

Beitrag von harry_wr »

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
von udo1toni » 16. Mär 2023 11:58
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:

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 {} \;
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 Antwort
openHAB 4.0.0 Build #3368 auf Ubuntu 22 mit MTTQ Mosquito und MariaDB

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

Re: JDBC::query: unable to get item for itemName

Beitrag von udo1toni »

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.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

harry_wr
Beiträge: 3
Registriert: 15. Mär 2023 07:49
Answers: 0

Re: JDBC::query: unable to get item for itemName

Beitrag von harry_wr »

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:

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!
wie bereits beschrieben, gibt es diese Items eigentlich nicht mehr!
Gruß
Harry
openHAB 4.0.0 Build #3368 auf Ubuntu 22 mit MTTQ Mosquito und MariaDB

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

Re: JDBC::query: unable to get item for itemName

Beitrag von udo1toni »

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:

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 {} \;
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. :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

harry_wr
Beiträge: 3
Registriert: 15. Mär 2023 07:49
Answers: 0

Re: JDBC::query: unable to get item for itemName

Beitrag von harry_wr »

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:
  • 1. Stop von openhab
    2. Dateien bearbeitet
    3. Startvon openhab
Hat alle wunderbar geklappt! Fehlermeldung ist jetzt nicht mehr vorhanden :!:

Danke Dir!!!!
openHAB 4.0.0 Build #3368 auf Ubuntu 22 mit MTTQ Mosquito und MariaDB

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

Re: JDBC::query: unable to get item for itemName

Beitrag von udo1toni »

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

Antworten