Seite 1 von 1

[gelöst] OH3.1 Fehler beim Anlegen eines Items in der Datenbank

Verfasst: 23. Mär 2021 20:20
von AGH
Ich benutze OH3.1, bin von 2.5.12 umgezogen. Ging bis auf ein paar Kleinigkeiten problemlos. OH lauft auf einem Raspi4

Beim Umzug habe ich die Datenbank von OH2.5 nach OH3 mitgenommen, weil ich meine Daten nicht aufgeben und Grafana nicht neu machen wollte

Jetzt habe ich neue Items in OH angelegt und erhalte folgende Fehlermeldung:

Code: Alles auswählen

java.sql.SQLException: Field 'ItemId' doesn't have a default value
Query is: INSERT INTO items (ItemName) VALUES ('RM_Waschkeller_Batterie') Query: INSERT INTO items (ItemName) VALUES (
<------>at org.apache.commons.dbutils.AbstractQueryRunner.rethrow(AbstractQueryRunner.java:392) ~[bundleFile:?]
<------>at org.apache.commons.dbutils.QueryRunner.insert(QueryRunner.java:610) ~[bundleFile:?]
<------>at org.apache.commons.dbutils.QueryRunner.insert(QueryRunner.java:534) ~[bundleFile:?]
<------>at org.knowm.yank.Yank.insert(Yank.java:123) [bundleFile:?]
<------>at org.knowm.yank.Yank.insert(Yank.java:106) [bundleFile:?]
<------>at org.openhab.persistence.jdbc.db.JdbcBaseDAO.doCreateNewEntryInItemsTable(JdbcBaseDAO.java:276) [bundleFile:
<------>at org.openhab.persistence.jdbc.internal.JdbcMapper.createNewEntryInItemsTable(JdbcMapper.java:90) [bundleFile
<------>at org.openhab.persistence.jdbc.internal.JdbcMapper.getTable(JdbcMapper.java:260) [bundleFile:?]
<------>at org.openhab.persistence.jdbc.internal.JdbcMapper.storeItemValue(JdbcMapper.java:150) [bundleFile:?]
<------>at org.openhab.persistence.jdbc.internal.JdbcPersistenceService.store(JdbcPersistenceService.java:143) [bundle
<------>at org.openhab.core.persistence.internal.PersistenceManagerImpl.handleStateEvent(PersistenceManagerImpl.java:1
<------>at org.openhab.core.persistence.internal.PersistenceManagerImpl.stateChanged(PersistenceManagerImpl.java:473)
<------>at org.openhab.core.items.GenericItem.lambda$1(GenericItem.java:259) [bundleFile:?]
<------>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) [?:?]
2021-03-23 18:26:54.402 [ERROR] [persistence.jdbc.internal.JdbcMapper] - JDBC::getTable: Creating table for item 'RM_Waschkeller_Batterie'
Die Tabelle in der die Items gezählt werden heißt 'items'. Alle neuen Tabellen erhalten die _0, Beispiel: 'namexyz_0'. Die Tabellen für die Items werden angelegt und werden befüllt.

meine Persistance:

Code: Alles auswählen

url=jdbc:mariadb://localhost:3306/openhab
tableNamePrefix=items
tableUseRealItemNames=true
tableIdDigitCount=0
Die Zugriffsdaten hab ich weggelassen. Wie ihr seht, nutze ich RealItemNames.

Hat irgendwer einen Tipp, wie zu o.a. Fehler kommt? Habe mich übrigens nicht getraut die Tabelle 'items' zu löschen, weil ich nicht weiß, was dann passiert.

Re: OH3.1 Fehler beim Anlegen eines Items in der Datenbank

Verfasst: 24. Mär 2021 10:21
von udo1toni
Gibt es denn in der items Tabelle einen Eintrag für das Item?

Hattest Du "schon immer" tableUseRealItemNames=true gesetzt? (insbesondere, bevor es zum Erstkontakt von openHAB mit der Datenbank kam)

Re: OH3.1 Fehler beim Anlegen eines Items in der Datenbank

Verfasst: 25. Mär 2021 18:40
von AGH
Moin Udo,
es gibt leider keinen Eintrag in der Tabelle "items", der sollte ja gerade generiert werden. ja ,ich arbeite schon immer mit RealItemnames, macht das Suchen deutlich einfacher :-) und ich arbeite lieber mit "sprechenden Items", vor allem dann, wenn man sich selbst an sein Schema hält.
Da ich mit Realnamen arbeite, benötige ich die diese Zählung eigentlich nicht. Wenn dieser _Index wegfallen würde, könnte ich auch leichter Diagramme in Grafana erstellen. So muss ich immer noch mal in die Datenbank sehen.
Dieses Item müsste eigentlich den Index _325 bekommen. Dies gilt ja auch für noch vier weitere Items. Es scheint so zu sein, als ich kein neues Item in der Tabelle "items" angelegt wird. Wenn alles nicht hilft, muss ich die Datenbank neu anlegen und Grafana neu einrichten.

Re: OH3.1 Fehler beim Anlegen eines Items in der Datenbank

Verfasst: 26. Mär 2021 00:13
von udo1toni
Ich nutze MySQL schon von Anbeginn, damals gab es die Option der Realnamen noch nicht. Ich hätte aber erwartet, dass die items-Tabelle gar nicht erst erzeugt wird und auch der Index entfällt. Vielleicht sollte man das im Forum mal anregen (also im englischen, da wo die Entwickler sind...

Re: OH3.1 Fehler beim Anlegen eines Items in der Datenbank

Verfasst: 26. Mär 2021 15:32
von AGH
Hast recht, wäre eine Maßnahme. Machst Du das?

Re: OH3.1 Fehler beim Anlegen eines Items in der Datenbank

Verfasst: 26. Mär 2021 18:06
von AGH
Ich hab jetzt eine neue Datenbank angelegt. Jetzt sind alle Tabellen mit Itemnamen und Index eingetragen, soweit ich gesehen habe.
Irgendetwas ist wohl beim Kopieren der Datenbank von =H2.5.12 auf 3.1 kaputt gegangen. Die Neuanlage hat jetzt den Vorteil das alte oder zum Testen angelegte Items jetzt raus sind.
Das ist auch so ein Manko, wenn nicht mehr notwendige Items gelöscht werden, dass diese in der Datenbank bleiben.

Re: OH3.1 Fehler beim Anlegen eines Items in der Datenbank

Verfasst: 26. Mär 2021 19:39
von udo1toni
AGH hat geschrieben: 26. Mär 2021 18:06 Das ist auch so ein Manko, wenn nicht mehr notwendige Items gelöscht werden, dass diese in der Datenbank bleiben.
Du vergisst dabei, dass nur, weil ein Item nicht mehr existiert, es nicht gesagt ist, dass Du die Daten nicht mehr haben willst. Der Entwickler geht hier (zurecht) davon aus, dass der Anwender schon eine gewisse Ahnung haben wird, wie MySQL funktioniert ;)
Die Daten liegen ja eh in einzelnen Tabellen vor, die kannst Du ja bequem droppen.

Re: [gelöst] OH3.1 Fehler beim Anlegen eines Items in der Datenbank

Verfasst: 28. Mär 2021 20:08
von AGH
Da hast Du sicher recht.