Jan_Wehe
I'm new here

Fehler beim Speichern einer Bild Referenz

Jump to solution

Hallo zusammen,

ich habe eine Newstabelle erstellt, zu einer News soll auch ein Bild gespeichert werden können.

Dazu habe ich folgende Formular Komponente genutzt:

<FS_REFERENCE name="cs_media" allowEmpty="yes" imagePreview="yes" upload="yes" useLanguages="no">

    <FILTER>

      <ALLOW type="picture"/>

      <HIDE type="folders"/>

    </FILTER>

    <LANGINFOS>

      <LANGINFO lang="*" label="News Visual" description="Please select a media file"/>

    </LANGINFOS>

    <PROJECTS>

      <LOCAL name=".">

        <SOURCES>

          <FOLDER name="pic" store="mediastore"/>

        </SOURCES>

      </LOCAL>

    </PROJECTS>

</FS_REFERENCE>

Wenn ich in der Datenquelle einen neuen Datensatz anlegen möchte, dann bekomme ich immer eine Fehlermeldung. Egal, ob ich ein Bild ausgewählt habe oder das Feld frei lasse.

Caused by: java.sql.SQLException: Incorrect string value: '\xA7" set...' for column 'image' at row 1

Detailierte Fehlermeldung:

Client Version: 4.2.454.47473

Java Version: 1.7.0 Oracle Corporation

FSVersion=4.2.454.47473#2659;JDK=1.7.0 32bit Oracle Corporation;OS=Windows 7 6.1 x86;Date=08.02.2012 09:39:00

de.espirit.or.ORException: Error code: 1366, state: HY000

    at de.espirit.or.impl.TemporalCommandHandler.handle(TemporalCommandHandler.java:147)

    at de.espirit.or.impl.CreateRelationCommand.accept(CreateRelationCommand.java:94)

    at de.espirit.or.impl.AbstractSessionHandler.commit(AbstractSessionHandler.java:642)

    at de.espirit.or.impl.AbstractSessionHandler.commit(AbstractSessionHandler.java:74)

    at de.espirit.firstspirit.content.ContentManagerImpl$TemporalSessionHandler.commit(ContentManagerImpl.java:1207)

    at de.espirit.firstspirit.content.ContentManagerImpl.commit(ContentManagerImpl.java:630)

    at sun.reflect.GeneratedMethodAccessor253.invoke(Unknown Source)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

    at java.lang.reflect.Method.invoke(Method.java:597)

    at de.espirit.firstspirit.io.DefaultServerHandler.callManager(DefaultServerHandler.java:62)

    at de.espirit.firstspirit.server.io.handler.ManagerCall.doCall(ManagerCall.java:91)

    at de.espirit.firstspirit.server.io.handler.CompactCall.handle(CompactCall.java:67)

    at de.espirit.firstspirit.server.io.ManagerCallWorker.run(ManagerCallWorker.java:108)

    at de.espirit.firstspirit.server.ExecutionManagerImpl$RunnableWrapper.call(ExecutionManagerImpl.java:553)

    at de.espirit.firstspirit.server.ExecutionManagerImpl$ExtendedCallable.call(ExecutionManagerImpl.java:520)

    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

    at java.util.concurrent.FutureTask.run(FutureTask.java:138)

    at de.espirit.common.util.BoundedExecutorService$RunnableWrapper.run(BoundedExecutorService.java:419)

    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)

    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

    at java.util.concurrent.FutureTask.run(FutureTask.java:138)

    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

    at java.lang.Thread.run(Thread.java:662)

    at de.espirit.common.util.SuspendableThread.run(SuspendableThread.java:36)

Caused by: java.sql.SQLException: Incorrect string value: '\xA7" set...' for column 'image' at row 1

    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)

    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)

    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)

    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)

    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)

    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)

    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)

    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2427)

    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345)

    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330)

    at com.mysql.jdbc.UpdatableResultSet.updateRow(UpdatableResultSet.java:2411)

    at de.espirit.or.impl.TemporalCommandHandler.updateForeignKey(TemporalCommandHandler.java:430)

    at de.espirit.or.impl.TemporalCommandHandler.handle(TemporalCommandHandler.java:137)

    at de.espirit.or.impl.CreateRelationCommand.accept(CreateRelationCommand.java:94)

    at de.espirit.or.impl.AbstractSessionHandler.commit(AbstractSessionHandler.java:642)

    at de.espirit.or.impl.AbstractSessionHandler.commit(AbstractSessionHandler.java:74)

    at de.espirit.firstspirit.content.ContentManagerImpl$TemporalSessionHandler.commit(ContentManagerImpl.java:1207)

    at de.espirit.firstspirit.content.ContentManagerImpl.commit(ContentManagerImpl.java:630)

    at sun.reflect.GeneratedMethodAccessor253.invoke(Unknown Source)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

    at java.lang.reflect.Method.invoke(Method.java:597)

    at de.espirit.firstspirit.io.DefaultServerHandler.callManager(DefaultServerHandler.java:62)

    at de.espirit.firstspirit.server.io.handler.ManagerCall.doCall(ManagerCall.java:91)

    at de.espirit.firstspirit.server.io.handler.CompactCall.handle(CompactCall.java:67)

    at de.espirit.firstspirit.server.io.ManagerCallWorker.run(ManagerCallWorker.java:108)

    at de.espirit.firstspirit.server.ExecutionManagerImpl$RunnableWrapper.call(ExecutionManagerImpl.java:553)

    at de.espirit.firstspirit.server.ExecutionManagerImpl$ExtendedCallable.call(ExecutionManagerImpl.java:520)

    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

    at java.util.concurrent.FutureTask.run(FutureTask.java:138)

    at de.espirit.common.util.BoundedExecutorService$RunnableWrapper.run(BoundedExecutorService.java:419)

    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)

    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)

    at java.util.concurrent.FutureTask.run(FutureTask.java:138)

    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)

    at de.espirit.firstspirit.client.io.ServerCaller.callManager(ServerCaller.java:372)

    at de.espirit.firstspirit.io.DefaultClientHandler.callManager(DefaultClientHandler.java:49)

    at de.espirit.firstspirit.client.io.RemoteManagerCaller.invoke(RemoteManagerCaller.java:52)

    at de.espirit.firstspirit.server.$Proxy33.commit(Unknown Source)

    at de.espirit.firstspirit.store.access.templatestore.SessionHandlerImpl.commit(SessionHandlerImpl.java:113)

    at de.espirit.or.impl.SessionImpl.doCommit(SessionImpl.java:191)

    at de.espirit.or.impl.AbstractSession.commit(AbstractSession.java:521)

    at de.espirit.firstspirit.store.access.contentstore.DatasetImpl.save(DatasetImpl.java:938)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.AbstractGuiXmlPanel.save(AbstractGuiXmlPanel.java:460)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.ContentGuiXmlPanel.persist(ContentGuiXmlPanel.java:394)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.ContentGuiXmlPanel.persist(ContentGuiXmlPanel.java:364)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.ContentGuiXmlPanel.save(ContentGuiXmlPanel.java:359)

    at de.espirit.firstspirit.client.gui.tree.store.contentstore.ContentGuiXmlPanel$GuiXmlToolbar$2.actionPerformed(ContentGuiXmlPanel.java:553)

    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

    at de.espirit.firstspirit.common.gui.FsButton.fireActionPerformed(FsButton.java:86)

    at de.espirit.firstspirit.common.gui.StoreHoverButton.fireActionPerformed(StoreHoverButton.java:97)

    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)

    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)

    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)

    at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)

    at java.awt.Component.processMouseEvent(Unknown Source)

    at javax.swing.JComponent.processMouseEvent(Unknown Source)

    at java.awt.Component.processEvent(Unknown Source)

    at java.awt.Container.processEvent(Unknown Source)

    at java.awt.Component.dispatchEventImpl(Unknown Source)

    at java.awt.Container.dispatchEventImpl(Unknown Source)

    at java.awt.Component.dispatchEvent(Unknown Source)

    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)

    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)

    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)

    at java.awt.Container.dispatchEventImpl(Unknown Source)

    at java.awt.Window.dispatchEventImpl(Unknown Source)

    at java.awt.Component.dispatchEvent(Unknown Source)

    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)

    at java.awt.EventQueue.access$000(Unknown Source)

    at java.awt.EventQueue$3.run(Unknown Source)

    at java.awt.EventQueue$3.run(Unknown Source)

    at java.security.AccessController.doPrivileged(Native Method)

    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)

    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)

    at java.awt.EventQueue$4.run(Unknown Source)

    at java.awt.EventQueue$4.run(Unknown Source)

    at java.security.AccessController.doPrivileged(Native Method)

    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)

    at java.awt.EventQueue.dispatchEvent(Unknown Source)

    at de.espirit.firstspirit.client.AWTDispatchingEventQueue.defaultDispatchEvent(AWTDispatchingEventQueue.java:130)

    at de.espirit.firstspirit.client.AWTDispatchingEventQueue._dispatchEvent(AWTDispatchingEventQueue.java:115)

    at de.espirit.firstspirit.client.AWTDispatchingEventQueue.dispatchEvent(AWTDispatchingEventQueue.java:108)

    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)

    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)

    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)

    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)

0 Kudos
1 Solution

Accepted Solutions

Hallo Herr Wehe,

das sieht sehr stark nach einem Konfigurationsproblem der Mysql bzgl. Encoding aus.

Steht die Collation von Table und Columns auf UTF-8?

Viele Grüße

Jörg Stephan

View solution in original post

0 Kudos
7 Replies
Jan_Wehe
I'm new here

Zusatzinfo:

Es wird eine MySQL Datenbank eingesetzt.

Auf dem Testserver wird die DerbyDB genutzt, dort tritt derFehler nicht auf.

Auch bei einem anderen Datensatz, bei dem ich eine Bild Referenz speichern möchte, tritt besagter Fehler auf.

0 Kudos

Nachtrag 2:

Nun tritt der Fehler auch auf, wenn ich aus der Produktdatenbank einen Datensatz löschen möchte.

Gibt es da bekannte Probleme oder Fallstricke, wenn eine MySQL Datenbank genutzt wird?

Client Version: 4.2.454.47473

Java Version: 1.7.0 Oracle Corporation

FSVersion=4.2.454.47473#2659;JDK=1.7.0 32bit Oracle Corporation;OS=Windows 7 6.1 x86;Date=08.02.2012 14:00:32

de.espirit.or.ORException: Error code: 1366, state: HY000

...

Caused by: java.sql.SQLException: Incorrect string value: '\xA7" set...' for column 'specification' at row 1

0 Kudos

Hallo Herr Wehe,

das sieht sehr stark nach einem Konfigurationsproblem der Mysql bzgl. Encoding aus.

Steht die Collation von Table und Columns auf UTF-8?

Viele Grüße

Jörg Stephan

0 Kudos

Hallo,

vielen Dank für Ihre Antwort. Wie das Encoding der Tabellen und Spalten konfiguriert ist kann ich derzeit leider noch nicht genau sagen, ich bemühe mich grade um direkten Zugriff auf die Datenbank.

Vielleicht sind auch schon die Verbindungseinstellungen problematisch? Folgendermaßen ist der Zugriff auf die DB konfiguriert (DBNAME, HOST und DBUSER sind natürlich nur Platzhalter):

jdbc.SCHEMA     = DBNAME

jdbc.layerclass = de.espirit.or.impl.mysql.MySQLLayer

jdbc.DRIVER     = com.mysql.jdbc.Driver

jdbc.URL        = jdbc:mysql://HOST:3306/DBUSER?useUnicode=true&characterEncoding=UTF8

0 Kudos

Hallo,

haben Sie inzwischen die Konfiguration der Datenbank herausfinden können?

Die Verbindungseinstellungen lassen auf den ersten Blick keine Fehler erkennen.

Viele Grüße

Rouven

0 Kudos

Hallo,

es lag daran, dass die Datenbank ISO-8859-1 encodet war. Nach Umstellung auf UTF-8 sind die Fehler verschwunden.

Eine Frage zum Encoding hätte ich aber noch:

Der Kunde möchte Teile der Webseite auch auf japanisch, koreanisch und chinesisch anbieten. Können diese Sprachen vom firstSpirit Admin hinzugefügt werden und muss das Encoding dazu auf UTF-16 geändert werden?

0 Kudos

Das ist schön, dass das Problem schonmal gelöst ist.

Die Sprachen können genauso angelegt werden, wie alle anderen Sprachen auch. Hier sollte es also keinerlei Probleme geben. Da UTF-8 und UTF-16 sich nur dahingehend unterscheiden, dass eine unterschiedliche Anzahl Bytes zur Kodierung verwendet wird, die beiden aber ansonsten dieselben Sprachen unterstützen, kann das Encoding auch auf UTF-8 bleiben.

Viele Grüße

Rouven

0 Kudos