Nach CSV-Import primary key violation
Verfasst: Montag 12. Januar 2015, 19:02
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
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