今天工作中需要更新一张表的一些数据.
于是建了一张临时表,运行sql脚本插入数据到临时表之后,连这张临时表更新了数据;
更新完之后线上出现大量的Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp的错误.查库后发现被更新的那张表中有许多记录的某个日期字段的值被改成了'0000-00-00 00:00:00'.将所有的'0000-00-00 00:00:00'改回为null之后,问题解决.
分析原因
这张表在做这次更新之前是没有哪个日期字段的值是'0000-00-00 00:00:00',因此判定就是运行的sql脚本的问题,这个sql脚本是我根据数仓同事发我的txt,修改一些内容之后手动改为的.sql格式的.检查后发现,sql脚本里存在一些日期的值为'None'的,虽然在运行脚本的过程中没有报错,但是却把这些原本是null的日期存为了'0000-00-00 00:00:00',连表更新之后就导致了这个错误的发生.