问题背景:
在Debezium做数据初始化的时候,对于一些tinyint字段的值,出现0,1的值的异常。
经过源码排查,数据在JDBC上面,读取到的数据是Boolean值。
通过排查,原来是MYSQL特有的数据问题,需要在JDBC上面加上关键字,问题解决。
JAVA数据类型 和 MYSQL的数据类型转换,要注意tinyInt 类型,且存储长度为1的情况。
MySQL Types to Java Types for ResultSet.getObject():
在Kafka-Connect debezium 的配置上,加上:
"database.tinyInt1isBit":"false",
(PS. 其他需要在JDBC上面增加参数,可以通过 database.PARAM_NAME=XXX的方式)
如果tinyInt1isBit =true(默认),且tinyInt存储长度为1 ,则转为java.lang.Boolean 。
否则转为java.lang.Integer。
JDBC的URL增加 tinyInt1isBit=false参数,注意参数名区分大小写,否则不生效
jdbc:mysql://${ucmha.proxy1_2.host}/${db.mysql.db}?tinyInt1isBit=false