canal icon indicating copy to clipboard operation
canal copied to clipboard

数字类型的字段,如果值为Null,会报错 For input string ""

Open syllvin opened this issue 2 years ago • 7 comments

比如Java中使用Integer、Long、BigDecimal等类型的字段,数据表中字段的值为null,canal就会报错:For input string "" 因为canal默认直接把值为Null的数字类型字段变成空字符串,所以报这个错误

syllvin avatar Jan 02 '23 09:01 syllvin

报错和复现条件,描述的清楚一些,包括canal版本

agapple avatar Jan 04 '23 05:01 agapple

报错和复现条件,描述的清楚一些,包括canal版本

canal.deployer-1.1.7-SNAPSHOT

syllvin avatar Jan 04 '23 05:01 syllvin

自己写个handler类,实现EntryHandler接口

syllvin avatar Jan 04 '23 05:01 syllvin

你搞个int字段,java里面Integer属性。然后你在数据表里面把字段值在null和数字之间来回修改一下,就能看到这个报错

syllvin avatar Jan 04 '23 05:01 syllvin

	用的这个依赖
	<dependency>
		<groupId>top.javatool</groupId>
		<artifactId>canal-spring-boot-starter</artifactId>
		<version>1.2.1-RELEASE</version>
	</dependency>

syllvin avatar Jan 04 '23 05:01 syllvin

这个解决了没,我也遇到了,用的一模一样的版本

yhwjava avatar Mar 31 '23 09:03 yhwjava

这问题是因为源数据字段类型为int,值为NULL,canal在解析数据的解析成了空字符串"",然后在反射转回原来的对象的时候,空字符串转int报错了,有人解决吗? 企业微信截图_17231027635095

shanfasheng avatar Aug 08 '24 07:08 shanfasheng