duhee created NIFI-12565:
----------------------------
Summary: Processor ''PutDatabaseRecord' error, when uses unsigned
tinyint or unsigned smallint in mysql
Key: NIFI-12565
URL: https://issues.apache.org/jira/browse/NIFI-12565
Project: Apache NiFi
Issue Type: Bug
Reporter: duhee
In Mysql,
The range of column type 'TINYINT Unsigned' is 0 to 255
And the range of column type 'SMALLINT Unsigned' is 0 to 65535.
But it doesn't work.
Processor 'PutDatabaseRecord' can be only 0 to 127 and 0 to 32767.
It works like signed column types.
* Nifi Version : NiFi 1.13.2
* Processor : PutDatabaseRecord
* Table schema
{code:java}
CREATE TABLE `nifi_unsigned` (
`inti` int NOT NULL AUTO_INCREMENT,
`tinyi` tinyint unsigned NOT NULL,
`smalli` smallint unsigned NOT NULL,
PRIMARY KEY (`inti`)
);
insert into nifi_unsigned VALUES (null, 127, 32767), (null, 128, 32768), (null,
255, 65535); {code}
* Error Message
{code:java}
2024-01-04 11:12:44,530 ERROR [Timer-Driven Process Thread-18]
o.a.n.p.standard.PutDatabaseRecord
PutDatabaseRecord[id=ce981d35-018c-1000-04a0-b61102693e56] Failed to put
Records to database for
StandardFlowFileRecord[uuid=322aefe1-0562-45e9-ba93-b221bc0e9202,claim=StandardContentClaim
[resourceClaim=StandardResourceClaim[id=1704333306508-74869,
container=default, section=117], offset=421,
length=288],offset=0,name=afcb5937-3c1d-4b2d-ab84-297eab73d17a,size=288].
Routing to failure.
java.sql.BatchUpdateException: Data truncation: Out of range value for column
'tinyi' at row 1
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:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:403)
at com.mysql.jdbc.Util.getInstance(Util.java:386)
at
com.mysql.jdbc.SQLError.createBatchUpdateException(SQLError.java:1154)
at
com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1835)
at
com.mysql.jdbc.PreparedStatement.executeBatchInternal(PreparedStatement.java:1319)
at com.mysql.jdbc.StatementImpl.executeBatch(StatementImpl.java:954)
at
org.apache.commons.dbcp2.DelegatingStatement.executeBatch(DelegatingStatement.java:241)
at
org.apache.commons.dbcp2.DelegatingStatement.executeBatch(DelegatingStatement.java:241)
at sun.reflect.GeneratedMethodAccessor898.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at
org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler.invoke(StandardControllerServiceInvocationHandler.java:254)
at
org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler.access$100(StandardControllerServiceInvocationHandler.java:38)
at
org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler$ProxiedReturnObjectInvocationHandler.invoke(StandardControllerServiceInvocationHandler.java:240)
at com.sun.proxy.$Proxy459.executeBatch(Unknown Source)
at
org.apache.nifi.processors.standard.PutDatabaseRecord.executeDML(PutDatabaseRecord.java:816)
at
org.apache.nifi.processors.standard.PutDatabaseRecord.putToDatabase(PutDatabaseRecord.java:998)
at
org.apache.nifi.processors.standard.PutDatabaseRecord.onTrigger(PutDatabaseRecord.java:492)
at
org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
at
org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1361)
at
org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:247)
at
org.apache.nifi.controller.scheduling.AbstractTimeBasedSchedulingAgent.lambda$doScheduleOnce$0(AbstractTimeBasedSchedulingAgent.java:59)
at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
at
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:750)
Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Out of range
value for column 'tinyi' at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3931)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3869)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2524)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2675)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2465)
at
com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1915)
at
com.mysql.jdbc.PreparedStatement.executeUpdateInternal(PreparedStatement.java:2136)
at
com.mysql.jdbc.PreparedStatement.executeBatchSerially(PreparedStatement.java:1813)
... 26 common frames omitted {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)