Seite 1 von 1

Nach CSV-Import primary key violation

Verfasst: Montag 12. Januar 2015, 19:02
von GeorgvH
Hallo,
wir haben als Mitglieder Vereine, also juristische Personen.
Nach dem Befüllen der Felder, inklusive der Pflichtfelder, wird der Button "speichern" gedrückt. Oben erscheint die Meldung "Fehler beim Speichern des Mitglieds."
Mir fällt auf, dass die Mandat-ID nicht erzeugt wurde. Sonst kann ich keinen Bedienungsfehler erkennen.

Gerade habe ich den entsprechenden Eintrag im Logfile gefunden:

[Mon Jan 12 18:59:28 CET 2015][ERROR][de.jost_net.JVerein.gui.control.MitgliedControl.handleStore] Fehler bei Speichern des Mitgliedes
java.rmi.RemoteException: insert failed, rollback successful; nested exception is:
org.h2.jdbc.JdbcSQLException: Eindeutiger Index oder Primärschlüssel verletzt: "CONSTRAINT_E7C_INDEX_C ON PUBLIC.MITGLIED(EXTERNEMITGLIEDSNUMMER)"
Unique index or primary key violation: "CONSTRAINT_E7C_INDEX_C ON PUBLIC.MITGLIED(EXTERNEMITGLIEDSNUMMER)"; SQL statement:
insert into MITGLIED (KTOIANREDE,LETZTEAENDERUNG,KTOIPLZ,GEBURTSDATUM,BEITRAGSGRUPPE,ADRESSIERUNGSZUSATZ,EINTRITT,STERBETAG,EXTERNEMITGLIEDSNUMMER,MANDATVERSION,KONTO,PLZ,MANDATSEQUENCE,KTOIEMAIL,ZAHLUNGSRHYTMUS,KTOIPERSONENART,ZAHLUNGSTERMIN,PERSONENART,ADRESSTYP,KTOIGESCHLECHT,EMAIL,TITEL,KTOINAME,MANDATDATUM,EINGABEDATUM,VERMERK2,IBAN,VERMERK1,TELEFONPRIVAT,ZAHLUNGSWEG,GESCHLECHT,BLZ,STRASSE,NAME,ORT,HANDY,BIC,KTOISTRASSE,KUENDIGUNG,KTOIORT,KTOIVORNAME,VORNAME,KTOISTAAT,STAAT,TELEFONDIENSTLICH,KTOITITEL,AUSTRITT,INDIVIDUELLERBEITRAG,KTOIADRESSIERUNGSZUSATZ,ZAHLERID,ANREDE) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) [23505-172]
at de.willuhn.datasource.db.AbstractDBObject.insert(AbstractDBObject.java:688)
at de.willuhn.datasource.db.AbstractDBObject.store(AbstractDBObject.java:308)
at de.jost_net.JVerein.gui.control.MitgliedControl.handleStore(MitgliedControl.java:3140)
at de.jost_net.JVerein.gui.view.AbstractAdresseDetailView$2.handleAction(AbstractAdresseDetailView.java:211)
at de.willuhn.jameica.gui.parts.Button$1$1.run(Button.java:177)
at org.eclipse.swt.custom.BusyIndicator.showWhile(Unknown Source)
at de.willuhn.jameica.gui.GUI$5.run(GUI.java:815)
at org.eclipse.swt.widgets.Synchronizer.syncExec(Unknown Source)
at org.eclipse.swt.widgets.Display.syncExec(Unknown Source)
at de.willuhn.jameica.gui.GUI.startSync(GUI.java:811)
at de.willuhn.jameica.gui.parts.Button$1.widgetSelected(Button.java:171)
at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Display.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at de.willuhn.jameica.gui.GUI.loop(GUI.java:832)
at de.willuhn.jameica.gui.GUI.init(GUI.java:315)
at de.willuhn.jameica.system.Application.init(Application.java:148)
at de.willuhn.jameica.system.Application.newInstance(Application.java:90)
at de.willuhn.jameica.Main.main(Main.java:78)
Caused by: org.h2.jdbc.JdbcSQLException: Eindeutiger Index oder Primärschlüssel verletzt: "CONSTRAINT_E7C_INDEX_C ON PUBLIC.MITGLIED(EXTERNEMITGLIEDSNUMMER)"
Unique index or primary key violation: "CONSTRAINT_E7C_INDEX_C ON PUBLIC.MITGLIED(EXTERNEMITGLIEDSNUMMER)"; SQL statement:
insert into MITGLIED (KTOIANREDE,LETZTEAENDERUNG,KTOIPLZ,GEBURTSDATUM,BEITRAGSGRUPPE,ADRESSIERUNGSZUSATZ,EINTRITT,STERBETAG,EXTERNEMITGLIEDSNUMMER,MANDATVERSION,KONTO,PLZ,MANDATSEQUENCE,KTOIEMAIL,ZAHLUNGSRHYTMUS,KTOIPERSONENART,ZAHLUNGSTERMIN,PERSONENART,ADRESSTYP,KTOIGESCHLECHT,EMAIL,TITEL,KTOINAME,MANDATDATUM,EINGABEDATUM,VERMERK2,IBAN,VERMERK1,TELEFONPRIVAT,ZAHLUNGSWEG,GESCHLECHT,BLZ,STRASSE,NAME,ORT,HANDY,BIC,KTOISTRASSE,KUENDIGUNG,KTOIORT,KTOIVORNAME,VORNAME,KTOISTAAT,STAAT,TELEFONDIENSTLICH,KTOITITEL,AUSTRITT,INDIVIDUELLERBEITRAG,KTOIADRESSIERUNGSZUSATZ,ZAHLERID,ANREDE) values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) [23505-172]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
at org.h2.message.DbException.get(DbException.java:169)
at org.h2.message.DbException.get(DbException.java:146)
at org.h2.index.BaseIndex.getDuplicateKeyException(BaseIndex.java:83)
at org.h2.index.PageBtree.find(PageBtree.java:121)
at org.h2.index.PageBtreeNode.addRowTry(PageBtreeNode.java:199)
at org.h2.index.PageBtreeIndex.addRow(PageBtreeIndex.java:104)
at org.h2.index.PageBtreeIndex.add(PageBtreeIndex.java:95)
at org.h2.table.RegularTable.addRow(RegularTable.java:124)
at org.h2.command.dml.Insert.insertRows(Insert.java:126)
at org.h2.command.dml.Insert.update(Insert.java:86)
at org.h2.command.CommandContainer.update(CommandContainer.java:79)
at org.h2.command.Command.executeUpdate(Command.java:235)
at org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java:154)
at org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java:140)
at de.willuhn.datasource.db.AbstractDBObject.insert(AbstractDBObject.java:649)
... 21 more

Die Mitglieder wurden via CSV importiert. Dabei ist schon aufgefallen dass einige Mitglieder, darunter alle juristischen Personen, nicht importiert wurden. Wahrscheinlich muss ich sagen, diese wurden/werden nicht angezeigt. Offenbar wurde im aktuellen Fall die (externe) Mitgliedsnummer (und andere Daten??) des Datensatzes doch importiert.

Das scheint sich zu bestätigen. Ich habe jetzt eine externe Mitgliedsnummer, die in der alten Verwaltung noch nicht verwendet wurde. Jetzt habe ich in JVerein und in der alten Verwaltung unterschiedliche IDs. Und in JVerein sind nun auch ID und ext. MitglNr. unterschiedlich.

Kann ich die Daten bereinigen? In der Datei jverein.h2.db (mit Notepad geöffnet) finde ich tatsächlich den Datensatz (oder Teile davon?), wodurch diese primery key violation verursacht wurde.

Danke im Voraus
Gruß
Georg

Re: Vereine als Mitglied

Verfasst: Montag 12. Januar 2015, 19:27
von heiner
Gibt es Meldungen in der Datei jameica.log?

Bei mir funktioniert die Speicherung juristischer Personen.

Heiner

Re: Nach CSV-Import primary key violation

Verfasst: Montag 12. Januar 2015, 19:42
von GeorgvH
Hallo Heiner,

ich habe den Logeintrag nachgetragen.

Eben habe ich die Vereine, die bei uns Mitglied sind, gefunden. Sie sind unter Adressen mit Adresstyp "Gruppenmitglied" gefunden.

Gruß
Georg

Re: Nach CSV-Import primary key violation

Verfasst: Dienstag 13. Januar 2015, 09:31
von heiner
Hallo Georg,

es gibt Probleme mit der externen Mitgliedsnummer. Die ist bereits vergeben. Übernehme die Adresse als Mitglied mit einem rechten Mausklick auf die Adresse.

Heiner