在Boomi计时器已经取消的uCanAccess错误

uCanAccess error in Boomi Timer already cancelled

本文关键字:uCanAccess 错误 取消 Boomi 计时器      更新时间:2023-09-26

我们正在使用Boomi做一个数据库和MS Access数据库之间的集成。我们使用uCanAccess作为我们的JDBC,所以我们可以读/写MS Access数据库。

但是,如果我们的初始查询返回超过49行,我们将从Boomi和uCanAccess收到以下错误。我尝试使用流程控制,以便一次只处理10个文档,但这不起作用。同样的错误。我试过更改批计数。什么都没有。

RYN-EMPDATA-BadgeDB的测试执行完成了错误。嵌入式消息:计时器已取消。

错误截图

uCanAccess网站版本3.0.6,推荐jackess和HSQLDB版本

插入操作成功,但更新操作失败。我们正在使用从访问文件导入的动态更新DB配置文件。

一些新信息。事实证明,失败发生在一个特定的记录上。我认为它在抱怨传递NULL值但我不能100%

下面是Java错误的顶部:

net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.6 null
    at net.ucanaccess.jdbc.UcanaccessConnection.commit(UcanaccessConnection.java:212)
    at com.boomi.connector.database.executor.SQLWriteExecutor.checkCommit(SQLWriteExecutor.java:44)
    at com.boomi.connector.database.executor.SQLWriteExecutor.execute(SQLWriteExecutor.java:65)
    at com.boomi.connector.database.DatabaseSend.executeData(DatabaseSend.java:192)
    at com.boomi.connector.database.DatabaseSend.executeStatement(DatabaseSend.java:144)
    at com.boomi.connector.database.DatabaseSend.executeDocument(DatabaseSend.java:121)
    at com.boomi.connector.database.DatabaseSend.handle(DatabaseSend.java:297)
    at com.boomi.connector.database.DatabaseSend.send(DatabaseSend.java:72)
    at com.boomi.connector.custom.CustomSendConnectorAction.invoke(CustomSendConnectorAction.java:60)
    at com.boomi.connector.base.BaseConnectorAction.invokeBase(BaseConnectorAction.java:295)
    at com.boomi.connector.base.BaseConnectorAction.invoke(BaseConnectorAction.java:234)
    at sun.reflect.GeneratedMethodAccessor30.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.boomi.util.ClassUtil$InvokerWithClassLoader.invoke(ClassUtil.java:360)
    at com.sun.proxy.$Proxy30.invoke(Unknown Source)
    at com.boomi.process.shape.ConnectorShapeHandler.execute(ConnectorShapeHandler.java:152)
    at com.boomi.process.shape.ConnectorShape.execute(ConnectorShape.java:143)
    at com.boomi.process.graph.ProcessShape.executeShape(ProcessShape.java:550)
    at com.boomi.process.graph.ProcessGraph.executeShape(ProcessGraph.java:488)
    at com.boomi.process.graph.ProcessGraph.executeNextShapes(ProcessGraph.java:572)
    at com.boomi.process.graph.ProcessGraph.executeShape(ProcessGraph.java:509)
    at com.boomi.process.graph.ProcessGraph.executeNextShapes(ProcessGraph.java:572)
    at com.boomi.process.graph.ProcessGraph.executeShape(ProcessGraph.java:509)
    at com.boomi.process.graph.ProcessGraph.executeNextShapes(ProcessGraph.java:572)
    at com.boomi.process.graph.ProcessGraph.execute(ProcessGraph.java:307)
    at com.boomi.process.ProcessExecution.call(ProcessExecution.java:783)
    at com.boomi.execution.ExecutionTask.call(ExecutionTask.java:920)
    at com.boomi.execution.ExecutionTask.call(ExecutionTask.java:63)
    at com.boomi.util.concurrent.CancellableFutureTask.run(CancellableFutureTask.java:172)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
Caused by: net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::3.0.6 null
    at net.ucanaccess.jdbc.UcanaccessConnection.flushIO(UcanaccessConnection.java:348)
    at net.ucanaccess.jdbc.UcanaccessConnection.commit(UcanaccessConnection.java:205)
    ... 32 more
Caused by: java.lang.StackOverflowError
    at java.nio.DirectByteBuffer.put(Unknown Source)
    at java.nio.DirectByteBuffer.put(Unknown Source)
经过广泛的测试,问题的原因与获取一个包含二进制数据的字段有关。我们没有更新这个字段,但是由于某种原因,一旦uCanAccess碰到一个包含二进制数据(程序存储的照片)的行,它就会失败。

下面是尝试通过uCanAccess控制台更新同一记录的输出:

    UCanAccess>update badgelisting set firstname="Test", lastname="stuff", active="false" where idnumber=58;
java.lang.StackOverflowError
        at java.nio.DirectByteBuffer.put(Unknown Source)
        at java.nio.ByteBuffer.put(Unknown Source)
        at java.nio.DirectByteBuffer.put(Unknown Source)
        at java.nio.DirectByteBuffer.put(Unknown Source)
        at sun.nio.ch.IOUtil.write(Unknown Source)
        at sun.nio.ch.FileChannelImpl.writeInternal(Unknown Source)
        at sun.nio.ch.FileChannelImpl.write(Unknown Source)
        at com.healthmarketscience.jackcess.impl.PageChannel.allocateNewPage(PageChannel.java:335)
        at com.healthmarketscience.jackcess.impl.TempPageHolder.setNewPage(TempPageHolder.java:104)
        at com.healthmarketscience.jackcess.impl.UsageMap$ReferenceHandler.createNewUsageMapPage(UsageMap.java:748)
        at com.healthmarketscience.jackcess.impl.UsageMap$ReferenceHandler.addOrRemovePageNumber(UsageMap.java:732)
        at com.healthmarketscience.jackcess.impl.UsageMap.removePageNumber(UsageMap.java:322)
        at com.healthmarketscience.jackcess.impl.PageChannel.allocateNewPage(PageChannel.java:339)
        at com.healthmarketscience.jackcess.impl.TempPageHolder.setNewPage(TempPageHolder.java:104)
        at com.healthmarketscience.jackcess.impl.UsageMap$ReferenceHandler.createNewUsageMapPage(UsageMap.java:748)
        at com.healthmarketscience.jackcess.impl.UsageMap$ReferenceHandler.addOrRemovePageNumber(UsageMap.java:732)
        at com.healthmarketscience.jackcess.impl.PageChannel.allocateNewPage(PageChannel.ja
---
A lot of this repeated a lot... 
---
va:339)
        at com.healthmarketscience.jackcess.impl.TempPageHolder.setNewPage(TempPageHolder.java:104)
UCanAccess>UCAExc:::3.0.6 null

这在很大程度上取决于时机。如果有人在处理之前在DB中,我会得到错误。而且,我必须将处理过程分成30个项目。然后我必须设置一个进程,在每次运行后运行压缩/修复,因为它使DB膨胀了大约30%。

对于Boomi来说,写入AccessDB应该是一个简单的任务。我不应该为了完成这项工作而返回到UCanAccess。