Ошибка uCanAccess в Boomi Timer уже отменена
Мы используем Boomi для интеграции между БД и БД MS Access. Мы используем uCanAccess в качестве нашего JDBC, чтобы мы могли читать / записывать БД MS Access.
Однако если наш первоначальный запрос возвращает более 49 строк, мы получаем следующую ошибку от Boomi и, в свою очередь, от uCanAccess. Я пытался использовать управление потоком, чтобы обрабатывать только 10 документов одновременно, но это не сработало. Та же ошибка Я пытался изменить количество партий. Ничего такого.
Выполнение теста RYN-EMPDATA-BadgeDB завершено с ошибками. Встроенное сообщение: таймер уже отменен.
Сайт uCanAccess версии 3.0.6 с рекомендуемыми версиями Jackcess и HSQLDB
Операции вставки выполнены успешно, а операции обновления - нет. Мы используем динамически обновляемый профиль БД, который был импортирован из файла доступа.
Некоторая новая информация. Оказывается, сбой происходит при определенной записи. Я думаю, что это жалуется на значение 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.StackruError
at java.nio.DirectByteBuffer.put(Unknown Source)
at java.nio.DirectByteBuffer.put(Unknown Source)
9/6 После тщательного тестирования причина проблемы связана с получением поля, содержащего двоичные данные в одном из полей. Мы не обновляем это поле, но по какой-то причине, когда uCanAccess попадает в строку с двоичными данными (фотография, сохраненная программой), происходит сбой.
Вот результат попытки обновить ту же запись через консоль uCanAccess:
UCanAccess>update badgelisting set firstname="Test", lastname="stuff", active="false" where idnumber=58;
java.lang.StackruError
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
1 ответ
Многое из этого зависит от времени. Если бы кто-то был в БД непосредственно перед обработкой, я бы получил ошибки. Кроме того, мне пришлось разбить обработку на связки по 30 штук. Затем мне пришлось настроить процесс, который будет запускать сжатие / восстановление после каждого запуска, потому что он раздувал БД примерно на 30%.
Что касается Boomi, запись в AccessDB должна быть простой задачей. Мне не нужно возвращаться к UCanAccess, чтобы сделать это.