Bitte wähle nachfolgend aus, welche Beiträge auf dieser Themenseite auf dem Ausdruck ausgegeben werden sollen. Um dies zu tun markiere bitte die Checkbox auf der linken Seite der Posts, die im Ausdruck berücksichtigt werden sollen und klicke anschließend ganz unten auf der Seite auf den Button "Drucken".

Ändern der Umsatzkategorie schlägt fehlt "Fehler beim Zuordnen der Umsatz-Kategorie" / Zeile nicht gefunden beim Löschen von Index "PUBLIC.IDX_UMSATZ_DATUM [...]"

jan-san

Betreff:

Ändern der Umsatzkategorie schlägt fehlt "Fehler beim Zuordnen der Umsatz-Kategorie" / Zeile nicht gefunden beim Löschen von Index "PUBLIC.IDX_UMSATZ_DATUM [...]"

 ·  Gepostet: Gestern um 12:20 Uhr  ·  #185018
Hallo allerseits,

Ich erhalte seit ein paar Tagen bei manchen (aber nicht allen) Umsätzen die Fehlermeldung "Fehler beim Zuordnen der Umsatz-Kategorie", wenn ich probiere, die Kategorie zu ändern.

In den System-Meldungen werden dazu folgende Einträge angezeigt:

Code
[Sun Feb 08 13:00:03 EET 2026][INFO][main][de.willuhn.jameica.hbci.gui.action.UmsatzAssign.rollback] rollback transaction
[Sun Feb 08 13:00:03 EET 2026][ERROR][main][de.willuhn.jameica.hbci.gui.action.UmsatzAssign.handleAction] error while assigning umsaetze
java.rmi.RemoteException: update failed; nested exception is: 
  org.h2.jdbc.JdbcSQLTimeoutException: Zeitüberschreitung beim Versuch die Tabelle {0} zu sperren
Timeout trying to lock table {0}; SQL statement:
update UMSATZ set UMSATZTYP_ID=? where ID=27915 [50200-199]
  at de.willuhn.datasource.db.AbstractDBObject.update(AbstractDBObject.java:775)
  at de.willuhn.datasource.db.AbstractDBObject.store(AbstractDBObject.java:318)
  at de.willuhn.jameica.hbci.server.AbstractHibiscusDBObject.store(AbstractHibiscusDBObject.java:109)
  at de.willuhn.jameica.hbci.gui.action.UmsatzAssign.handleAction(UmsatzAssign.java:94)
  at de.willuhn.jameica.gui.parts.table.FeatureShortcut$2.handleEvent(FeatureShortcut.java:133)
  at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
  at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1977)
  at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1655)
  at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1682)
  at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1665)
  at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1704)
  at org.eclipse.swt.widgets.Widget.gtk_key_release_event(Widget.java:1004)
  at org.eclipse.swt.widgets.Control.gtk_key_release_event(Control.java:4042)
  at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:2640)
  at org.eclipse.swt.widgets.Control.windowProc(Control.java:6864)
  at org.eclipse.swt.widgets.Table.windowProc(Table.java:4162)
  at org.eclipse.swt.widgets.Display.windowProc(Display.java:6191)
  at org.eclipse.swt.internal.gtk3.GTK3.gtk_main_do_event(Native Method)
  at org.eclipse.swt.widgets.Display.eventProc(Display.java:1619)
  at org.eclipse.swt.internal.gtk3.GTK3.gtk_main_iteration_do(Native Method)
  at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4537)
  at de.willuhn.jameica.gui.GUI.loop(GUI.java:933)
  at de.willuhn.jameica.gui.GUI.init(GUI.java:335)
  at de.willuhn.jameica.system.Application.init(Application.java:145)
  at de.willuhn.jameica.system.Application.newInstance(Application.java:87)
  at de.willuhn.jameica.Main.main(Main.java:78)
Caused by: org.h2.jdbc.JdbcSQLTimeoutException: Zeitüberschreitung beim Versuch die Tabelle {0} zu sperren
Timeout trying to lock table {0}; SQL statement:
update UMSATZ set UMSATZTYP_ID=? where ID=27915 [50200-199]
  at org.h2.message.DbException.getJdbcSQLException(DbException.java:508)
  at org.h2.message.DbException.getJdbcSQLException(DbException.java:427)
  at org.h2.message.DbException.get(DbException.java:194)
  at org.h2.command.Command.filterConcurrentUpdate(Command.java:333)
  at org.h2.command.Command.executeUpdate(Command.java:274)
  at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:200)
  at org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:154)
  at de.willuhn.datasource.db.AbstractDBObject.update(AbstractDBObject.java:752)
  ... 25 more
Caused by: org.h2.message.DbException: Zeile nicht gefunden beim Löschen von Index "PUBLIC.IDX_UMSATZ_DATUM: ( /* key:27915 */ 27915, [redacted])"
Row not found when trying to delete from index "PUBLIC.IDX_UMSATZ_DATUM: ( /* key:27915 */ 27915, [redacted])" [90112-199]
  at org.h2.message.DbException.get(DbException.java:205)
  at org.h2.message.DbException.get(DbException.java:181)
  at org.h2.index.PageBtreeLeaf.remove(PageBtreeLeaf.java:231)
  at org.h2.index.PageBtreeNode.remove(PageBtreeNode.java:335)
  at org.h2.index.PageBtreeIndex.remove(PageBtreeIndex.java:245)
  at org.h2.table.PageStoreTable.removeRow(PageStoreTable.java:277)
  at org.h2.table.Table.updateRows(Table.java:506)
  at org.h2.command.dml.Update.update(Update.java:203)
  at org.h2.command.CommandContainer.update(CommandContainer.java:133)
  at org.h2.command.Command.executeUpdate(Command.java:267)
  ... 28 more
Caused by: org.h2.jdbc.JdbcSQLTransientException: Zeile nicht gefunden beim Löschen von Index "PUBLIC.IDX_UMSATZ_DATUM: ( /* key:27915 */ 27915, [redacted])"
Row not found when trying to delete from index "PUBLIC.IDX_UMSATZ_DATUM: ( /* key:27915 */ 27915, [redacted])" [90112-199]
  at org.h2.message.DbException.getJdbcSQLException(DbException.java:621)
  at org.h2.message.DbException.getJdbcSQLException(DbException.java:427)
  ... 38 more

[Sun Feb 08 13:00:27 EET 2026][INFO][pool-3-thread-1][de.willuhn.jameica.hbci.messaging.MarkOverdueMessageConsumer.updateAll] update all unread counters
[Sun Feb 08 13:02:53 EET 2026][INFO][main][de.willuhn.jameica.hbci.gui.action.UmsatzAssign.rollback] rollback transaction
[Sun Feb 08 13:02:53 EET 2026][ERROR][main][de.willuhn.jameica.hbci.gui.action.UmsatzAssign.handleAction] error while assigning umsaetze
java.rmi.RemoteException: update failed; nested exception is: 
  org.h2.jdbc.JdbcSQLTimeoutException: Zeitüberschreitung beim Versuch die Tabelle {0} zu sperren
Timeout trying to lock table {0}; SQL statement:
update UMSATZ set UMSATZTYP_ID=? where ID=27915 [50200-199]
  at de.willuhn.datasource.db.AbstractDBObject.update(AbstractDBObject.java:775)
  at de.willuhn.datasource.db.AbstractDBObject.store(AbstractDBObject.java:318)
  at de.willuhn.jameica.hbci.server.AbstractHibiscusDBObject.store(AbstractHibiscusDBObject.java:109)
  at de.willuhn.jameica.hbci.gui.action.UmsatzAssign.handleAction(UmsatzAssign.java:94)
  at de.willuhn.jameica.gui.parts.table.FeatureShortcut$2.handleEvent(FeatureShortcut.java:133)
  at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
  at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1977)
  at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1655)
  at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1682)
  at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1665)
  at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1704)
  at org.eclipse.swt.widgets.Widget.gtk_key_release_event(Widget.java:1004)
  at org.eclipse.swt.widgets.Control.gtk_key_release_event(Control.java:4042)
  at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:2640)
  at org.eclipse.swt.widgets.Control.windowProc(Control.java:6864)
  at org.eclipse.swt.widgets.Button.windowProc(Button.java:1341)
  at org.eclipse.swt.widgets.Display.windowProc(Display.java:6191)
  at org.eclipse.swt.internal.gtk3.GTK3.gtk_main_do_event(Native Method)
  at org.eclipse.swt.widgets.Display.eventProc(Display.java:1619)
  at org.eclipse.swt.internal.gtk3.GTK3.gtk_main_iteration_do(Native Method)
  at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4537)
  at de.willuhn.jameica.gui.GUI.loop(GUI.java:933)
  at de.willuhn.jameica.gui.GUI.init(GUI.java:335)
  at de.willuhn.jameica.system.Application.init(Application.java:145)
  at de.willuhn.jameica.system.Application.newInstance(Application.java:87)
  at de.willuhn.jameica.Main.main(Main.java:78)
Caused by: org.h2.jdbc.JdbcSQLTimeoutException: Zeitüberschreitung beim Versuch die Tabelle {0} zu sperren
Timeout trying to lock table {0}; SQL statement:
update UMSATZ set UMSATZTYP_ID=? where ID=27915 [50200-199]
  at org.h2.message.DbException.getJdbcSQLException(DbException.java:508)
  at org.h2.message.DbException.getJdbcSQLException(DbException.java:427)
  at org.h2.message.DbException.get(DbException.java:194)
  at org.h2.command.Command.filterConcurrentUpdate(Command.java:333)
  at org.h2.command.Command.executeUpdate(Command.java:274)
  at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:200)
  at org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:154)
  at de.willuhn.datasource.db.AbstractDBObject.update(AbstractDBObject.java:752)
  ... 25 more
Caused by: org.h2.message.DbException: Zeile nicht gefunden beim Löschen von Index "PUBLIC.IDX_UMSATZ_DATUM: ( /* key:27915 */ 27915, [redacted])"
Row not found when trying to delete from index "PUBLIC.IDX_UMSATZ_DATUM: ( /* key:27915 */ 27915, [redacted])" [90112-199]
  at org.h2.message.DbException.get(DbException.java:205)
  at org.h2.message.DbException.get(DbException.java:181)
  at org.h2.index.PageBtreeLeaf.remove(PageBtreeLeaf.java:231)
  at org.h2.index.PageBtreeNode.remove(PageBtreeNode.java:335)
  at org.h2.index.PageBtreeIndex.remove(PageBtreeIndex.java:245)
  at org.h2.table.PageStoreTable.removeRow(PageStoreTable.java:277)
  at org.h2.table.Table.updateRows(Table.java:506)
  at org.h2.command.dml.Update.update(Update.java:203)
  at org.h2.command.CommandContainer.update(CommandContainer.java:133)
  at org.h2.command.Command.executeUpdate(Command.java:267)
  ... 28 more
Caused by: org.h2.jdbc.JdbcSQLTransientException: Zeile nicht gefunden beim Löschen von Index "PUBLIC.IDX_UMSATZ_DATUM: ( /* key:27915 */ 27915, [redacted])"
Row not found when trying to delete from index "PUBLIC.IDX_UMSATZ_DATUM: ( /* key:27915 */ 27915, [redacted])" [90112-199]
  at org.h2.message.DbException.getJdbcSQLException(DbException.java:621)
  at org.h2.message.DbException.getJdbcSQLException(DbException.java:427)
  ... 38 more


Es scheint also eine Inkonsistenz zwischen den Daten in IDX_UMSATZ_DATUM und in UMSATZ zu geben. Möglicherweise sind die bei einem System-Crash entstanden.

Gibt es eine Möglichkeit, diese Indices neu generieren zu lassen?

Ich habe schon versucht, Jameica wie hier in den FAQs beschrieben im H2 im Recovery-Modus zu starten, aber das hat nicht geholfen.

Ich benutze die aktuellen nightly builds von Jameica und Hibiscus unter Linux:
  • Jameica 2.13.0-nightly [Datum 20260208]
  • Hibiscus 2.13.0-nightly [Datum 20260208], Datenbank-Version: 71