今天恶心死了 用到了mysql-5.1.47版本的架包 该包邮BUG
1.问题描述
遗留项目中用到了 spring jdbctemplate ,数据库使用的 mysql 5.7,驱动包使用 mysql 5.1.47 版本的 connector jar 包,在用 jdbctemplate 执行update语句(含有数据库字段 datetime 类型的更新),有时候会遇到 更新数据库记录的时间字段时,报空指针。
DEBUG o.s.jdbc.core.JdbcTemplate - Executing prepared SQL statement [update msm_process_instance set curr_activity_id=?,curr_activity_name=?,curr_user_Id=?,curr_user_name=?,curr_form_key=?,status_index=?,status_name=?,update_time=? where id=?]
java.lang.NullPointerException
at com.mysql.jdbc.PreparedStatement.setTimestamp(PreparedStatement.java:4241)
at sun.reflect.GeneratedMethodAccessor188.invoke(Unknown Source)
————————————————
版权声明:本文为CSDN博主「cqwshzj」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012688704/article/details/95082905
跟踪源代码发现报错的代码是 mysql 的connector jar包中的代码,排除传入参数的可能原因后,怀疑是 connector jar包的问题。
2.解决方案
参考官方的bug,发现是 5.1.47版本的驱动包有 bug,解决方案是需要将jar包回退到 5.1.46 版本。
mysql 官方的bug列表
修改 pom.xml 中的 mysql 驱动包版本为 5.1.46
完成的异常信息如下所示。报错位于 mysql jar包中的源码,主要是 setTimestamp 方法报错 空指针。
————————————————
版权声明:本文为CSDN博主「cqwshzj」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u012688704/article/details/95082905
来自:https://blog.csdn.net/u012688704/article/details/95082905