java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long

文章讲述了在使用FlinkSQL从MySQL获取数据时遇到类型转换错误的两种原因及解决方法。一是确保jdbc连接器版本与MySQL版本匹配,二是调整字段数据类型。特别地,作者提到一种不常见的情况,即MySQL字段的unsigned属性导致的类型问题,取消该属性设置可解决问题。
摘要由CSDN通过智能技术生成

问题描述:

        在使用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 的问题

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值