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:
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:
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
[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