[gelöst] Fehler beim Schreiben in die Datenbank

magic

Betreff:

[gelöst] Fehler beim Schreiben in die Datenbank

 ·  Gepostet: 07.04.2021 - 23:55 Uhr  ·  #159160
Hallo,

ich versuche über das Mashup-Plugin my PayPal-Konto abzurufen erhalte aber dabei diese Fehlermeldung:
Fehler: Exception beim Zusammenbau der Umsätze für die Übergabe nach Hibiscus: java.rmi.RemoteException: insert failed, rollback successful; nested exception is:
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\xB8' for column 'kommentar' at row 1

Vom Plugin-Forum bin ich hierher verwiesen worden, da das Problem wohl in Hibiscus liegt. Als Backend für Hibiscus nutze ich eine MySQL DB.


Code

[07.04.2021 23:45:30] Synchronisierung via non-HBCI (Hibiscus Mashup) läuft
[07.04.2021 23:45:30]  
[07.04.2021 23:45:30] System-Info: OS[Linux (ver. 4.15.0-140-generic) amd64]  Platform[Jameica 2.10.0 | Build: 480 vom 20201127]  Plugin[hibiscus 2.10.1 | Build: 362 vom 20210402]
[07.04.2021 23:45:30] Installierte und aktive Plugin-Versionen: [Finance.Websync ver. 0.9.21-nightly | Build: 702 vom 20210308] [Hibiscus Mashup ver. 0.9.18 | Build: 440 vom 20210125]
[07.04.2021 23:45:30] Überprüfe Jameica-Version ...
[07.04.2021 23:45:30] OK: Jameica-Version 2.10.0 installiert und aktiv
[07.04.2021 23:45:30] Überprüfe Java-Version und den verwendeten Zeichensatz ...
[07.04.2021 23:45:30] OK: Java-Version 15.0.2 von 'Oracle Corporation' installiert, aktiv und verwendet Zeichensatz 'UTF-8' (Home: /usr/lib/jvm/java-15-oracle)
[07.04.2021 23:45:30] Überprüfe Selenium-Version ...
[07.04.2021 23:45:30] OK: Selenium-Version 3.141.59 installiert und aktiv
[07.04.2021 23:45:30] Überprüfe ChromeDriver-Version ...
[07.04.2021 23:45:31] OK: ChromeDriver-Version 88.0.4324.96 installiert und aktiv
[07.04.2021 23:45:31]  
[07.04.2021 23:45:31] Synchronisiere Konto 'PayPal, Kto. 6161****** [J.P. Morgan]' ...
[07.04.2021 23:45:32] HTMLUnit Proxy-Einstellungen setzen ...
[07.04.2021 23:45:32] Info-Warnung: Systemproxy-Einstellungen verwenden ist in der Applikation eingestellt, es ist aber kein Proxy im System eingetragen!
[07.04.2021 23:45:32] API-Authentifizierung mit API-Anmeldekennung W******* auf https://api-3t.paypal.com/nvp? ...
[07.04.2021 23:45:42] Rufe API-URLs auf und starte Aufbau des Kontoauszuges ...
[07.04.2021 23:45:42] Suche Umsätze im Zeitraum vom 17.12.2019 bis 07.04.2021 und lese diese aus ...
[07.04.2021 23:45:44] API-Transaktionssuche mit eingestelltem Intervall von '1000 Std.' gestartet ...
[07.04.2021 23:47:04] Kontoauszug erfolgreich. Importiere Daten ...
[07.04.2021 23:47:04] Fehler: Exception beim Zusammenbau der Umsätze für die Übergabe nach Hibiscus: java.rmi.RemoteException: insert failed, rollback successful; nested exception is: 
  java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\xB8' for column 'kommentar' at row 1
  at de.willuhn.datasource.db.AbstractDBObject.insert(AbstractDBObject.java:700)
  at de.willuhn.jameica.hbci.server.UmsatzImpl.insert(UmsatzImpl.java:127)
  at de.willuhn.datasource.db.AbstractDBObject.store(AbstractDBObject.java:314)
  at de.willuhn.jameica.hbci.server.AbstractHibiscusDBObject.store(AbstractHibiscusDBObject.java:104)
  at de.derrichter.hibiscus.mashup.crossover.interact.DataWorker.syncDataAndAccount(DataWorker.java:1252)
  at de.derrichter.hibiscus.mashup.crossover.websync.institute.paypal.ApiCollector.run(ApiCollector.java:224)
  at de.derrichter.hibiscus.mashup.crossover.websync.WebSynchronizeJobKontoauszug.execute(WebSynchronizeJobKontoauszug.java:77)
  at de.derrichter.hibiscus.mashup.crossover.websync.WebSynchronizeBackend$WebSyncJobGroup.sync(WebSynchronizeBackend.java:655)
  at de.willuhn.jameica.hbci.synchronize.AbstractSynchronizeBackend$Worker.run(AbstractSynchronizeBackend.java:407)
  at de.willuhn.jameica.gui.GUI$7.run(GUI.java:1081)
Caused by: java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\xB8' for column 'kommentar' at row 1
  at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:965)
  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)
  ... 9 more





Wie kann ich das Problem lösen?

Schöne Grüße
Maik

hibiscus

Betreff:

Re: Fehler beim Schreiben in die Datenbank

 ·  Gepostet: 08.04.2021 - 07:11 Uhr  ·  #159161
Kannst du mal den zugehörigen Link aus dem Plugin-Forum posten, von wo du hier her verwiesen wurdest? Der Fehler entsteht, weil das Plugin versucht, eine Umsatzbuchung in Hibiscus mit einem Kommentar anzulegen, welcher die Zeichenfolge "\xF0\x9F\x92\xB8" enthält. Das ist das Unicode-Zeichen für "MOney with Wings". https://www.fileformat.info/in…/index.htm

Deine MySQL-Datenbank lehnt das aber mit der Fehlermeldung ab, dass das Zeichen nicht erlaubt ist. Die Ursache ist also nicht Hibiscus. Sondern entweder das Plugin - ich weiss nicht, ob dieses Unicode-Zeichen Absicht oder Versehen ist. Oder aber du selbst, wenn deine MySQL-Datenbank das nicht kann. Im Wiki unter https://www.willuhn.de/wiki/doku.php?id=support:mysql ist die Anlage der Datenbank mit UTF8-Encoding beschrieben. Damit sollte sich das Zeichen eigentlich speichern lassen. Unter Umständen hast du die Datenbank aber mit einem anderen Zeichensatz angelegt, in dem das Zeichen nicht erlaubt ist.

magic

Betreff:

Re: Fehler beim Schreiben in die Datenbank

 ·  Gepostet: 08.04.2021 - 08:40 Uhr  ·  #159162
Moin,

danke für die Antwort.
Der Link zum Thread vom Plugin-Forum:
https://scripting-forum.derric…=34&t=1083

hmm... wenn ich das richtig sehe, dann tritt der Fehler beim Einfügen des Datums in die Tabelle "Umsatz" in der Spalte "Kommentar" auf. Beides ist aber als utf8_general_ci deklariert:
 



Danke!

Schöne Grüße
Maik

hibiscus

Betreff:

Re: Fehler beim Schreiben in die Datenbank

 ·  Gepostet: 08.04.2021 - 08:50 Uhr  ·  #159163
Du könntest mal versuchen, den Spaltentyp auf "utf8mb4_unicode_ci" zu ändern. Vielleicht geht es dann. Oder aber das Plugin filtert solche Emojis aus.

magic

Betreff:

Re: Fehler beim Schreiben in die Datenbank

 ·  Gepostet: 08.04.2021 - 12:21 Uhr  ·  #159168
Die Umstellung der Spalte auf "utf8mb4_unicode_ci" hat geholfen.
Die Daten konnten erfolgreich abgeholt werden:
In der Datenbank sieht es so aus:
 


in Hibiscus wird es so angezeigt:
 



Für mich habe ich jetzt eine Lösung. Bleibt nur die generelle Frage, wer hier nochmal gucken sollte?
Hibiscus oder das Plugin?


Danke!

Schöne Grüße
Maik

hibiscus

Betreff:

Re: Fehler beim Schreiben in die Datenbank

 ·  Gepostet: 08.04.2021 - 13:18 Uhr  ·  #159171
Danke für die Rückmeldung.

Zitat geschrieben von magic

Für mich habe ich jetzt eine Lösung. Bleibt nur die generelle Frage, wer hier nochmal gucken sollte?
Hibiscus oder das Plugin?

Genau genommen, müsste es lediglich im Wiki unter angepasst werden: https://www.willuhn.de/wiki/doku.php?id=support:mysql
Ich würde es aber mal noch so lassen, da ich nicht weiss, ob die Zeichensatz-Änderungen irgendwelche anderen Nebeneffekte hat. Es sei denn, mit dem Fehler finden sich noch weitere User.