Seite 2 von 13
Re: Fehler beim Initialisieren der Datenbank
Verfasst: Montag 25. Februar 2019, 12:21
von ManuelR
Hallo,
vielen Dank für eure bisherigen Bemühungen. Gibt es die Möglichkeit eines vorübergehenden Downgrades, bis das Problem gefixt ist? Jverein ist für mich neben Firefox, Thunderbird und Libreoffice das wichtigste Programm auf meinem Rechner.
Herzliche Grüße
Manuel
Re: Fehler beim Initialisieren der Datenbank
Verfasst: Montag 25. Februar 2019, 13:49
von DIG
@ManuelR
svti hat geschrieben: ↑Samstag 29. September 2018, 16:10
die Verwendung der H2-Version 1.4.196 hat bei mir das Problem zunächst beseitigt.
Die Datei h2-1.4.196.jar in das Jameica Verzeichnis (in meinem Fall: "/opt/jameica/lib/h2/") kopieren.
Die Datei "jameica/lib/h2/h2-1.4.197.jar" löschen
Re: Fehler beim Initialisieren der Datenbank
Verfasst: Montag 25. Februar 2019, 14:06
von ManuelR
Danke für die schnelle Antwort.
Die 196er Version habe ich schon eine Weile installiert. Jetzt trat der Fehler wieder auf.
Habe die h2 Version einfach mal zum Spaß noch mal mit einer frisch heruntergeladenen Version ersetzt und bekomme folgende Fehlermeldung:
Code: Alles auswählen
java.lang.NullPointerException
at de.jost_net.JVerein.gui.control.EinstellungControl.getName(EinstellungControl.java:311)
at de.jost_net.JVerein.gui.view.EinstellungenAllgemeinView.bind(EinstellungenAllgemeinView.java:41)
at de.willuhn.jameica.gui.GUI$5.run(GUI.java:702)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:72)
at de.willuhn.jameica.gui.GUI$6.run(GUI.java:899)
at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:236)
at org.eclipse.swt.widgets.Display.syncExec(Display.java:5941)
at de.willuhn.jameica.gui.GUI.startSync(GUI.java:895)
at de.willuhn.jameica.gui.GUI.startView(GUI.java:593)
at de.willuhn.jameica.gui.GUI.startView(GUI.java:528)
at de.willuhn.jameica.gui.GUI.startView(GUI.java:565)
at de.jost_net.JVerein.gui.action.AdministrationEinstellungenAllgemeinAction.handleAction(AdministrationEinstellungenAllgemeinAction.java:28)
at de.willuhn.jameica.gui.parts.Button$1$1.run(Button.java:174)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:72)
at de.willuhn.jameica.gui.GUI$6.run(GUI.java:899)
at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:236)
at org.eclipse.swt.widgets.Display.syncExec(Display.java:5941)
at de.willuhn.jameica.gui.GUI.startSync(GUI.java:895)
at de.willuhn.jameica.gui.parts.Button$1.widgetSelected(Button.java:168)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:252)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5797)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1374)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:5051)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4583)
at de.willuhn.jameica.gui.GUI.loop(GUI.java:916)
at de.willuhn.jameica.gui.GUI.init(GUI.java:327)
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:75)
Re: Fehler beim Initialisieren der Datenbank
Verfasst: Montag 25. Februar 2019, 15:02
von DIG
Mit jedem Jameica-Update hast Du zunächst wieder die 1.4.197, die dann (ggf. wieder) gegen die 1.4.196 ausgetauscht werden muss.
Re: Fehler beim Initialisieren der Datenbank
Verfasst: Montag 25. Februar 2019, 15:10
von DIG
@hibiscus + @heiner
Hallo Olaf, hallo Heiner,
es gibt schon Tickets/issues bei H2 zu diesem Problem. Bei einem dazu habe ich gelesen dass falsche Metadaten zu Indices/Primärschlüsseln in die Datenbank gelangen, die dann bei weiteren SQL-DDL-Befehlen mit Primärschlüsseländerungen zum bekannten Fehler führen.
Die Routine, die die falschen Metadaten schreibt, soll(te) in 1.4.198 gefixt sein.
Das wird aber nun nur dann helfen wenn man die JVerein-Datenbank nicht bereits mit h2-1.4.197 geöffnet hatte, sprich nur dann wenn man jetzt erst von Jameica <=2.8.1 auf eine (noch zu erstellende) Jameica-Version mit h2-1.4.198 updated.
Viele werden aber -wie auch ich- das Update auf Jameica 2.8.2ff bereits gemacht haben und arbeiten aktuell mit dem H2-Downgrade auf 1.4.196...
In den Kommentaren zu den besagten H2-Issues wird ein manuelles Datenbankupgrade als Lösung empfohlen. Das habe ich -wie gesagt- mal angetestet, lief.
Da zumindest ich keine Lust habe auf eine Lösung seitens H2 zu warten (der Release-Zyklus ist da ja eher lang), finde ich das manuelle Datenbankupgrade interessanter.
Oder gibt es da Euerseits Gegenanzeigen/Einwände?
Ein Batch (für Windows) zur Automatisierung des Datenbankupgrade könnte so aussehen:
Code: Alles auswählen
move C:\jameica-daten\jverein\h2db C:\jameica-daten\jverein\h2db.bak
mkdir C:\jameica-daten\jverein\h2db
java -cp h2-1.4.196.jar org.h2.tools.Script -url jdbc:h2:C:/jameica-daten/jverein/h2db.bak/jverein -user jverein -password jverein -script C:/temp/out.sql
java -cp h2-1.4.197.jar org.h2.tools.RunScript -url jdbc:h2:C:/jameica-daten/jverein/h2db/jverein -user jverein -password jverein -script C:/temp/out.sql
Oder mögt Ihr das nicht in Jameica und/oder JVerein einbauen?
Re: Fehler beim Initialisieren der Datenbank
Verfasst: Montag 25. Februar 2019, 15:20
von hibiscus
@ManuelR: Die NullPointerException ist ein Folgefehler. Der eigentliche Fehler findet sich weiter vorn im Diagnose-Log:
Code: Alles auswählen
Caused by: java.lang.RuntimeException: rowCount expected 921 got 893 T211.I163
at org.h2.message.DbException.throwInternalError(DbException.java:242)
at org.h2.table.RegularTable.checkRowCount(RegularTable.java:169)
Wenn ich nach "java.lang.RuntimeException: rowCount expected" google, finde ich u.a.:
https://groups.google.com/forum/#!topic ... 9ZxzyUNdOI
Ursache scheint eine korrupte Datenbank zu sein. Im Wiki von Hibiscus habe ich unter
https://www.willuhn.de/wiki/doku.php?id ... lexception verschiedene Loesungsmoeglichkeiten zur Reparatur einer defekten Hibiscus-Datenbank beschrieben. Ich weiss aber leider nicht, inwiefern diese auf JVerein uebertragbar sind. Eventuell hilft hier nur das Einspielen eines Backups von einem Zeitpunkt vor dem Auftreten des Fehlers.
Re: Fehler beim Initialisieren der Datenbank
Verfasst: Montag 25. Februar 2019, 15:26
von hibiscus
DIG hat geschrieben: ↑Montag 25. Februar 2019, 15:10
Da zumindest ich keine Lust habe auf eine Lösung seitens H2 zu warten (der Release-Zyklus ist da ja eher lang), finde ich das manuelle Datenbankupgrade interessanter.
Bis 2017 waren die Release-Intervalle von H2 deutlich kuerzer. Ich nehme an, dass sie aufgrund der aufwaendigen Umstellung auf den neuen MV-Store zuletzt so lang waren und kuenftig wieder kuerzer sein werden.
DIG hat geschrieben: ↑Montag 25. Februar 2019, 15:10
Oder gibt es da Euerseits Gegenanzeigen/Einwände?
Die 198er Version ist ja erst vor wenigen Tagen rausgekommen und ab morgen im Nightly-Build. Bevor ich eine neue Jameica-Version damit veroeffentliche, wuerde ich schon gern noch etwas warten, um ueber ggf. auftretende Probleme mit den neuen Nightly-Builds von Usern zu erhalten. Waere ja bloed, wenn dieses Problem damit geloest wird, dafuer aber ein anderes neues auftritt.
DIG hat geschrieben: ↑Montag 25. Februar 2019, 15:10
Ein Batch (für Windows) zur Automatisierung des Datenbankupgrade könnte so aussehen:
...
Oder mögt Ihr das nicht in Jameica und/oder JVerein einbauen?
Direkt in Jameica kann man es schlecht einbauen, weil das die zugehoerigen Datenbank-Parameter nicht kennt. Und ich bin skeptisch, ob es sinnvoll waere, das direkt in JVerein einzubauen. Diese manuelle Migration sollte ja eigentlich nur noetig sein, wenn bei Installation tatsaechlich dieses Problem vorhanden ist. Bei Installationen, wo das Problem nicht existiert, sollte diese Migration vermutlich nicht noetig sein.
Re: Fehler beim Initialisieren der Datenbank
Verfasst: Montag 25. Februar 2019, 15:31
von DIG
@hibiscus + @ManuelR:
In den letzten Wochen hatte ich auch zweimal einen ähnlichen Fehler - und mir mit einem Restore der Datensicherung geholfen.
Das war mein erster Vorfall dieser Art, die H2-datenbank habe ich als sonst sehr robust wahrgenommen.
Stellt hier womöglich die Tatsache dass wir mit h2-1.4.196 auf einer Datenbank arbeiten, die beim ersten Start nach dem Jameica-2.8.2- bzw. h2-1.4.197-Update schon mal einen mitgekriegt hat, ein Risiko dar?
Ist auch aus diesem Grund ein manuelles Datenbankupgrade angeraten?
Re: Fehler beim Initialisieren der Datenbank
Verfasst: Montag 25. Februar 2019, 15:37
von hibiscus
DIG hat geschrieben: ↑Montag 25. Februar 2019, 15:31
In den letzten Wochen hatte ich auch zweimal einen ähnlichen Fehler - und mir mit einem Restore der Datensicherung geholfen.
Das war mein erster Vorfall dieser Art, die H2-datenbank habe ich als sonst sehr robust wahrgenommen.
Ja, das war bis 1.4.196 auch meine Erfahrung.
DIG hat geschrieben: ↑Montag 25. Februar 2019, 15:31
Stellt hier womöglich die Tatsache dass wir mit h2-1.4.196 auf einer Datenbank arbeiten, die beim ersten Start nach dem Jameica-2.8.2- bzw. h2-1.4.197-Update schon mal einen mitgekriegt hat, ein Risiko dar?
Ist auch aus diesem Grund ein manuelles Datenbankupgrade angeraten?
Ich kann das Risiko leider auch nicht wirklich beurteilen. Dazu verstehe ich das Problem nicht hinreichend. Mir ist bis heute auch nach wie vor unklar, unter welchen Bedingungen das Problem eigentlich ausgeloest wird. Denn es scheint ja auch nicht alle User zu betreffen. Andernfalls wuerden sich viel mehr User mit dem Problem melden und Hibiscus selbst muesste dann eigentlich auch betroffen sein.
Fehler beim Initialisieren der Datenbank - Lösung mit manuellem Datenbankupgrade
Verfasst: Dienstag 26. Februar 2019, 00:28
von DIG
Mein Ausgangssituation war die:
- Update auf Jameica>=2.8.2
- JVerein-H2-Datenbank dabei so in Mitleidenschaft gezogen dass sie sich mit h2-1.4.197 nicht öffnen lies
- daher H2-Downgrade auf 1.4.196
Mit dieser Konfiguration habe ich nun monatelang gearbeitet und zweimal einen Datenbankfehler gehabt, der eine Rücksicherung erforderlich machte.
Nach den Beiträgen hier und einigen Versuchen meinerseits dazu habe ich nun folgendes gemacht:
- zuerst natürlich mein Datenverzeichnis gesichert und dann den Ordner C:/jameica-daten/jverein/h2db in C:/jameica-daten/jverein/h2db.bak umbenannt
- Die JVerein-Datenbank mit h2-1.4.196 als Script gesichert
java -cp h2-1.4.196.jar org.h2.tools.Script -url jdbc:h2:C:/jameica-daten/jverein/h2db.bak/jverein -user jverein -password jverein -script C:/temp/out.sql
- Den Ordner C:/jameica-daten/jverein/h2db neu anlegen
- Die JVerein-Datenbank aus dem generierten Script neu erzeugt, ebenfalls wieder mit h2-1.4.196
java -cp h2-1.4.196.jar org.h2.tools.RunScript -url jdbc:h2:C:/jameica-daten/jverein/h2db/jverein -user jverein -password jverein -script C:/temp/out.sql
- Wenn alles läuft kann dann der Ordner C:/jameica-daten/jverein/h2db.bak gelöscht werden
Anschließend habe ich in meiner aktuellen Jameica-Installation die H2-Bibliothek wieder in h2-1.4.197 ändern können:
Jameica+Hibiscus+JVerein laufen einwandfrei, keine Auffälligkeiten oder gar Fehler habe ich seit dem gehabt und das trotz intensiver Nutzung mit Abrechnungslauf, Spendenquittungserstellung usw.
Für mich ist das die grundlegende Lösung des Datenbank-Problems: ich habe so eine fehlerfreie Datenbankdatei bekommen und werde wieder neue Jameica- und/oder H2-Versionen problemlos installieren können.