Seite 1 von 1

Unique index or primary key violation

Verfasst: Montag 17. September 2018, 14:01
von Peter Thomassen
Hi,

wie in viewtopic.php?f=5&t=4515 vorgeschlagen habe ich versucht, meine JVerein-Datenbank mit LibreOffice zu öffnen. Wenn ich das tue, erscheint:

Code: Alles auswählen

SQL Status: 23505
Error code: 23505

Unique index or primary key violation: "PRIMARY KEY ON """".PAGE_INDEX"; SQL statement:
ALTER TABLE PUBLIC.ANFANGSBESTAND ADD CONSTRAINT PUBLIC.FKANFANGSBESTAND1 FOREIGN KEY(KONTO) REFERENCES PUBLIC.KONTO(ID) NOCHECK [23505-197]
Das liegt wohl an der in dem anderen Thread beschriebenen Splitbuchung.

Was kann ich nun tun? Leider habe ich kein Backup, das bis vor die ungültige Splitbuchung zurückreicht.

Schöne Grüße,
Peter

PS: Abgesehen von der ungültigen Splitbuchung funktioniert übrigens alles einwandfrei. Es ist also nicht extrem eilig.

Re: Unique index or primary key violation

Verfasst: Montag 17. September 2018, 14:31
von Peter Thomassen
Es war dieser Bug hier: https://github.com/h2database/h2database/issues/1073
Mit h2 1.4.196 kann ich verbinden.

Re: Unique index or primary key violation

Verfasst: Dienstag 24. September 2019, 23:00
von wald
Moin,

hatte den gleich Fehler, der mit der Aktualisierung von Jverein aufgetreten ist.
Weiss nicht mehr genau von welcher Version ich gekommen bin, aber die Version 2.8.18 hat den Fehler geworfen.

Das Problem kann auch unabhängig von JVerein sein, weil die H2 Bibliotheken von Jameica kommen. Habe das Upgrade von 2.6 auf 2.8 gleichzeitig durchgefuehrt.

Das Upgrade der Bibliothek hat auch zur Folge, dass die Daten jetzt nicht mehr in jverein.h2.db sondern in jverein.mv.db gespeichert werden. Wer weiter nur die alte Datei sichert, sollte das fixen ;-)

Um das Problem zu fixen ist ein Upgrade der Datenbank noetig, dass man manuell machen muss.
Es ist hier beschrieben. https://h2database.com/html/tutorial.ht ... up_restore

Den Export muss man mit einer H2 Version <= 1.4.196 machen, die nicht mehr direkt runter zu laden ist, aber noch auf dem Server verfuegbar, wenn man das Releasedatum kennt: https://codeload.github.com/h2database/ ... on-1.4.196
Den import macht man dann mit einer aktuellen Version.
Hier noch die Kommando-Zeilen dafuer (den Pfand zur jverein.h2.db ohne die beiden Endungen angeben, sonst bekommt man wirre Fehlermeldungen):
Backup

Code: Alles auswählen

java -cp ~/Downloads/h2-1.4.196/bin/h2-1.4.196.jar  org.h2.tools.Script -url "jdbc:h2:./jverein" -user "jverein" -password "jverein" -script "./backup.sql"
und dann der Restore, auch wenn das Ergebnis eine jverin.mv.db ist, muss man die jverein.h2.db aus dem Weg raeumen, sonst laueft man in den gleichen Fehler:

Code: Alles auswählen

java -cp ~/Downloads/h2/bin/h2-1.4.199.jar  org.h2.tools.RunScript -url "jdbc:h2:./jverein" -user "jverein" -password "jverein" -script "./backup.sql"
Man kann auch mit dem Kommando:

Code: Alles auswählen

java -cp ~/Downloads/h2/bin/h2-1.4.199.jar  org.h2.tools.RunScript -url "jdbc:h2:./jverein;MV_STORE=FALSE" -user "jverein" -password "jverein" -script "./backup.sql"

wieder eine h2.db schreiben.

Ich hoffe, das hilft jemandem seine Vereins DB wieder herzustellen.

So richtig war die Fehlermeldung nicht zu sehen. Nach dem Upgrade war einfach die Jverein DB leer.

Gruesse
Thomas