Caused by: java.sql.SQLException: Value ‘0000-00-00 00:00:00‘ can not be represented as java.sql.Tim

博客讲述使用Seatunnel从Mysql往Hive抽数时,出现‘0000-00-00 00:00:00’无法表示为java.sql.Timestamp的报错。作者通过百度查到原因,是DATETIME值全为0无法表示,属于无效日期,可使用convertToNull属性解决。

一、今天在使用Seatunnel从Mysql往Hive抽数时,报错: Caused by: java.sql.SQLException: Value ‘0000-00-00 00:00:00’ can not be represented as java.sql.Timestamp

1.发现报错后赶紧百度一番,查到原因,原文链接如下
https://blog.csdn.net/qq_41665826/article/details/116403625
2.错误产生的原因,以及三种参数配置

产生错误原因是DATETIME值完全由0组成,无法表示

1)设置zeroDateTimeBehavior 属性,当遇到DATETIME值完全由0组成时,最终的有效值可以设置为,
     .异常(exception).一个近似值(round).将这个值转换为null(convertToNull)(2)默认情况为exception,设置这个属性会抛出一个SQLException异常,其SQLSate码为S1009。这个
    状态码在写存储过程处理异常时也可以用到。
    
 (3)convertToNull,返回null来替代0000-00-00这样的日期。
 
 (4)round,将日期转换为0001-01-01

因此,出现0000-00-00 属于一个无效日期,用convertToNull属性即可。

3.解决过程

在Seatunnel脚本中,找到jdbc的URL,在末尾加上&zeroDateTimeBehavior=convertToNull 即可
例:jdbc:mysql://hostname:3306/database_name?zeroDateTimeBehavior=convertToNull
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值