Hallo zusammen,
wir haben hier bei einem Kunden ein Problem in FirstSpirit (version 5.2.102.69188) mit einer Datenquelle.
Es existiert eine Datenquelle "News" mit einer sprachabhängigen Spalte "detail_text" vom Typ FIRSTspirit-Editor, Länge 65535, leere Werte erlaubt.
Man kann jedoch (aus unbekannten Gründen) maximal 36 Zeichen speichern, ab dem 37. Zeichen erhält man einen
Fehler beim Datenbankzugriff:
Error code: 1118, state: 42000
Client Version: 5.2.102.69188
Java Version: 1.8.0_241 Oracle Corporation
FSVersion=5.2.102.69188#4579;JDK=1.8.0_241 32bit Oracle Corporation;OS=Windows 10 10.0 x86;Date=06.02.2020 08:58:57de.espirit.or.ORException: Error code: 1118, state: 42000 at de.espirit.or.impl.TemporalCommandHandler.update(TemporalCommandHandler.java:630) at de.espirit.or.impl.TemporalCommandHandler.handle(TemporalCommandHandler.java:251) at de.espirit.or.impl.UpdateCommand.accept(UpdateCommand.java:54) at de.espirit.or.impl.AbstractSessionHandler.commit(AbstractSessionHandler.java:798) at de.espirit.or.impl.AbstractSessionHandler.commit(AbstractSessionHandler.java:75) at de.espirit.firstspirit.content.ContentManagerImpl$TemporalSessionHandler.commit(ContentManagerImpl.java:1336) at de.espirit.firstspirit.content.ContentManagerImpl.commit(ContentManagerImpl.java:704) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at de.espirit.firstspirit.io.DefaultServerHandler.callManager(DefaultServerHandler.java:67) at de.espirit.firstspirit.server.io.handler.ManagerCall.doCall(ManagerCall.java:132) at de.espirit.firstspirit.server.io.handler.CompactCall.handle(CompactCall.java:73) at de.espirit.firstspirit.server.io.MessageWorker.run(MessageWorker.java:31) at de.espirit.firstspirit.server.ExecutionManagerImpl$RunnableWrapper.call(ExecutionManagerImpl.java:605) at de.espirit.firstspirit.server.ExecutionManagerImpl$ExtendedCallable.call(ExecutionManagerImpl.java:572) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at de.espirit.common.util.BoundedExecutorService$RunnableWrapper.run(BoundedExecutorService.java:425) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) at de.espirit.common.util.SuspendableThread.run(SuspendableThread.java:38)Caused by: java.sql.SQLException: Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:422) at com.mysql.jdbc.Util.handleNewInstance(Util.java:404) at com.mysql.jdbc.Util.getInstance(Util.java:387) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:941) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3870) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3806) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2470) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2617) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2550) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1861) at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2073) at com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2009) at com.mysql.jdbc.PreparedStatement.executeLargeUpdate(PreparedStatement.java:5094) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1994) at com.mysql.jdbc.UpdatableResultSet.insertRow(UpdatableResultSet.java:844) at de.espirit.or.impl.TemporalCommandHandler.insertRow(TemporalCommandHandler.java:757) at de.espirit.or.impl.TemporalCommandHandler.insertUpdatedEntry(TemporalCommandHandler.java:582) at de.espirit.or.impl.TemporalCommandHandler.update(TemporalCommandHandler.java:627) at de.espirit.or.impl.TemporalCommandHandler.handle(TemporalCommandHandler.java:251) at de.espirit.or.impl.UpdateCommand.accept(UpdateCommand.java:54) at de.espirit.or.impl.AbstractSessionHandler.commit(AbstractSessionHandler.java:798) at de.espirit.or.impl.AbstractSessionHandler.commit(AbstractSessionHandler.java:75) at de.espirit.firstspirit.content.ContentManagerImpl$TemporalSessionHandler.commit(ContentManagerImpl.java:1336) at de.espirit.firstspirit.content.ContentManagerImpl.commit(ContentManagerImpl.java:704) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at de.espirit.firstspirit.io.DefaultServerHandler.callManager(DefaultServerHandler.java:67) at de.espirit.firstspirit.server.io.handler.ManagerCall.doCall(ManagerCall.java:132) at de.espirit.firstspirit.server.io.handler.CompactCall.handle(CompactCall.java:73) at de.espirit.firstspirit.server.io.MessageWorker.run(MessageWorker.java:31) at de.espirit.firstspirit.server.ExecutionManagerImpl$RunnableWrapper.call(ExecutionManagerImpl.java:605) at de.espirit.firstspirit.server.ExecutionManagerImpl$ExtendedCallable.call(ExecutionManagerImpl.java:572) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at de.espirit.common.util.BoundedExecutorService$RunnableWrapper.run(BoundedExecutorService.java:425) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at de.espirit.firstspirit.client.io.ServerCaller.callManager(ServerCaller.java:461) at de.espirit.firstspirit.io.DefaultClientHandler.callManager(DefaultClientHandler.java:58) at de.espirit.firstspirit.client.io.RemoteManagerCaller.invoke(RemoteManagerCaller.java:53) at de.espirit.firstspirit.server.$Proxy88.commit(Unknown Source) at de.espirit.firstspirit.store.access.templatestore.SessionHandlerImpl.commit(SessionHandlerImpl.java:126) at de.espirit.or.impl.SessionImpl.doCommit(SessionImpl.java:219) at de.espirit.or.impl.AbstractSession.commit(AbstractSession.java:585) at de.espirit.firstspirit.store.access.contentstore.DatasetImpl.save(DatasetImpl.java:1187) at de.espirit.firstspirit.store.access.contentstore.DatasetImpl.save(DatasetImpl.java:1232) at de.espirit.firstspirit.client.gui.tree.store.AbstractGuiStoreElement.writeToServer(AbstractGuiStoreElement.java:683) at de.espirit.firstspirit.client.gui.tree.store.contentstore.GuiDataset.writeToServer(GuiDataset.java:306) at de.espirit.firstspirit.client.gui.tree.store.AbstractGuiStoreElement.store(AbstractGuiStoreElement.java:1365) at de.espirit.firstspirit.client.gui.tree.store.AbstractGuiStoreElement.storeAndNotify(AbstractGuiStoreElement.java:605) at de.espirit.firstspirit.client.gui.tree.store.AbstractGuiStoreElement.save(AbstractGuiStoreElement.java:592) at de.espirit.firstspirit.client.gui.tree.store.AbstractGuiStoreElement.save(AbstractGuiStoreElement.java:572) at de.espirit.firstspirit.client.gui.tree.store.AbstractGuiStoreElement.save(AbstractGuiStoreElement.java:563) at de.espirit.firstspirit.client.action.SaveAction.actionPerformed(SaveAction.java:77) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at de.espirit.firstspirit.common.gui.FsButton.fireActionPerformed(FsButton.java:86) 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$500(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$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$JavaSecurityAccessImpl.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$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at de.espirit.firstspirit.client.AWTDispatchingEventQueue.defaultDispatchEvent(AWTDispatchingEventQueue.java:161) at de.espirit.firstspirit.client.AWTDispatchingEventQueue._dispatchEvent(AWTDispatchingEventQueue.java:138) at de.espirit.firstspirit.client.AWTDispatchingEventQueue.dispatchEvent(AWTDispatchingEventQueue.java:131) 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)
Ist hier die Lösung tatsächlich, eine neue Spalte anzulegen und das Feld auf die neue Spalte zu mappen sowie die Inhalte dann manuell in die neue Datenbankspalte zu kopieren ?
Oder kann man das auch sinnvoll anders beheben ?