Seite 1 von 1

Fehler beim speichern der Mail (MySQL Datenbank)

Verfasst: Sonntag 21. März 2021, 19:55
von Laplace62
Hallo zusammen,
ich musste nach einem Serverwechsel die MySQL Datenbank auf den neuen Server migrieren.
JVerein, Hibiscus läuft völlig Problemlos bis auf eine Kleinigkeit.

Beim eMail Versand gibt es folgende Fehlermeldung:

Fehler bei speichern der Mail: insert failed, rollback successful; nested exception is:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'versand' cannot be null
java.rmi.RemoteException: insert failed, rollback successful; nested exception is:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'versand' cannot be null
at de.willuhn.datasource.db.AbstractDBObject.insert(AbstractDBObject.java:700)
at de.willuhn.datasource.db.AbstractDBObject.store(AbstractDBObject.java:314)
at de.jost_net.JVerein.gui.control.MailControl.handleStore(MailControl.java:560)
at de.jost_net.JVerein.gui.control.MailControl$1.handleAction(MailControl.java:311)
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:4594)
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:4145)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1055)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3958)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3561)
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)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'versand' cannot be null
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
at com.mysql.jdbc.Util.getInstance(Util.java:408)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3978)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3914)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2530)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2683)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2495)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1903)
at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2124)
at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2058)
at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5158)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2043)
at de.willuhn.datasource.db.AbstractDBObject.insert(AbstractDBObject.java:655)
... 21 more

Hat jemand eine Idee, wie ich das Problem beseitigen kann?

LG Thomas Kühnemund

Re: Fehler beim speichern der Mail (MySQL Datenbank)

Verfasst: Montag 16. August 2021, 16:28
von dieseyer
Hallo zusammen,

bei mir das gleiche Problem:
[Mon Aug 16 08:14:02 UTC 2021][ERROR][main][de.jost_net.JVerein.gui.control.MailControl.handleStore] Fehler bei speichern der Mail: insert failed, rollback successful; nested exception is:
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'versand' cannot be nul
Column 'versand' cannot be null lässt sich doch sicher beheben - oder?

Re: Fehler beim speichern der Mail (MySQL Datenbank)

Verfasst: Sonntag 23. Januar 2022, 19:03
von Laplace62
Hallo Heiner,
hast Du noch eine Idee was ich machen kann?
Eine neu Installation mit einspielen des Datenbank Backups auf meinem Testsystem löst das Problem auch nicht.

LG Thomas

Re: Fehler beim speichern der Mail (MySQL Datenbank)

Verfasst: Donnerstag 27. Januar 2022, 22:01
von NicoB77
Ihr könntet versuchen, in der Tabelle "mailempfaenger" die "not null"-Bedingung der Spalte "versand" zu entfernen. Eventuell muss das auch für die Spalte "versand" in der Tabelle "mail" gemacht werden. Im Code wird diese Bedingung zwar vorgegeben, aber sie ist nicht immer erfüllt. Und in der H2-Datenbank, die vermutlich die meisten Benutzer verwenden, wird sie nicht gesetzt (ist vermutlich ein Programmierfehler).

Re: Fehler beim speichern der Mail (MySQL Datenbank)

Verfasst: Sonntag 30. Januar 2022, 00:55
von sbuer
Hi,

alternativ mittels direkten Datenbankzugriff in der Tabelle Mail und Mailempfänger das Attribut Versand mit einem Dummy-Wert versehen. Da es sich bei beiden Attributen um einen Timestamp Type handelt, müsste das Format genau so aussehen: 2022-01-30 00:38:57.0

Ich hab das mal versucht bei mir zu rekonstrurieren - aber ich schaffe es nicht den Fehler reproduziert zu bekommen.

Gruß,
Stefan

Re: Fehler beim speichern der Mail (MySQL Datenbank)

Verfasst: Sonntag 30. Januar 2022, 23:41
von Laplace62
Hz,

so ich habe mir das Schema mit der MySQL Workbench genau angeschaut.
In der Tabelle mail und mailempfänger ist die Spalte versand komplett mit dem Timestamp versehen.
Der Timestamp scheint auch durchgängig richtig zu sein.
Keine Zeile enthält hier den Wert null.

Wo könnte ich noch suchen?

LG Thomas

Re: Fehler beim speichern der Mail (MySQL Datenbank)

Verfasst: Montag 31. Januar 2022, 21:14
von NicoB77
Die Datenbank erzwingt, dass die Spalte nicht leer ist, daher sind alle existierenden Zeilen korrekt gefüllt. Ich vermute, dass der Fehler dadurch entsteht, dass die E-Mail an mindestens einen Empfänger nicht erfolgreich verschickt wurde, und deshalb für diesen die Spalte "versand leer". Wegen der "not null"-Bedingung kann die ensprechende Zeile nicht in der Datenbank gespeichert werden, was die Exception auslöst. Entweder musst Du die entsprechenden E-Mail-Adressen identifizieren (falls sie nicht in der Log-Datei zu finden sind, Log-Level anpassen) und entfernen, oder die "not null"-Bedingung aus der Datenbank entfernen.

Re: Fehler beim speichern der Mail (MySQL Datenbank)

Verfasst: Dienstag 1. Februar 2022, 13:41
von Laplace62
Nein,daran kann es nicht liegen. Der Fehler tritt auch bei einer Email auf die 100% funktioniert.