问题描述:
在使用flinkSQL读取mysql数据时,出现类型转换的错误,经多方查找,终于解决,我这里的解决方式与网上大部分方案都不一样,因此留存记录,也希望对后来者有帮助。
1、问题原因:
这里的原因有两种,一种是jdbc包版本对不上的问题,另一种是flinkSQL的数据类型和MySQL的数据类型对不上的问题。
2、处理方式:
2.1 MySQL的connetor包版本
处理方式就是将mysql的connector包版本与mysql的版本对应上,mysql5.*对应connector5.1.*,mysql8.*对应connector8.0.*,如果版本已经对应上了,可以考虑提升小版本,网上大部分解决方案就是这样的。
2.2 数据类型对不上
这里直接修改数据类型即可,不做赘述
2.3 mysql中字段符号的问题
这里就是我遇到的问题,将mysql中字段类型的unsigned勾选给去掉就行了。
2.3.1 附注:
符号问题一般会导致mysql的数字类型位数增加1位,上升一种数据类型,例如bigint上升到Long,int上升到bigint,因此也会导致java.lang.ClassCastException: java.math.Long cannot be cast to java.lang.Int 的问题