HTTP500 Data truncation : Incorrect date value多种解决方式

在做项目的时候,本地服务器能正常使用,部署在服务器上最后显示:异常报告HTTP500消息 PreparedStatementCallback ; SQL [ insert into t _ leave ( student _ id , grade _ id , start _ time , end _ time , info , status , remark ) values (?,?,?,?,?,?,?);]; Data truncation : Incorrect date value:"xAC \ xED \x00\x05sr\x00\x0Djava. time .Serx95]\x84\ xBA\x1B"HxB2\x0C\x00\x00xpw\x07\x03\x00\x00\x07\xE7x05\x0Ax' for column ' start _ time ' at row 1; ced04b13f99e4c05b8f1cddfbfabbb91.jpg

 问题分析

  1. 数据类型错误
  2. JDBC驱动版本过低
  3. 数据库在存储数据的时候转换错误

问题解决

针对第一种错误:在数据库中用了data型,实例化用了String或者其它。解决办法:检查数据库类型和实例化类型

第二种错误:实例化类型用LocalDate,但JDBC驱动版本低于4.2,解决办法更换更高版本的jdbc.jar

查看JDBC版本:项目文件夹下找到WEB-INF下的lib文件夹,找到mysql-connector-java-xx.jaraab6a0a9fa6a4799a9b3c94cd9945c69.jpg

点击向右的尖括号展开,在META-INF打开MANIFEST.MF

c7a209ff92f64001af6359f3d4b7bc3d.jpg

 若版本不是4.2及其以上,则更换更高版本的JDBC,官方网址:http://dev.mysql.com/downloads/connector​​​​​​/

针对第三种问题:(本次项目中实际问题 本人耗时两小时解决)

先说具体原因:MySQL对数据存储有着相当高的严格

探索过程:在这个功能模块上加了日志,对输出每一次的结果进行分析,结果还是不行,最后灵光一闪,我之间把sql语句拿到SQLyog上执行,最终皇天不负有心人 让我在不起眼的查询输出信息的地方找到了bug的“万恶之源”-----MySQL error1292- Incorrect datetime value;瞬间恍然大悟、茅塞顿开、原来如此。我在功能模块调用了jQuery UI的日历选择器,默认类型为yyyy-mm-dd,然而在MySQL中他会默认为减法运算。此时此刻犹如拨开云雾见青天,迫不及待地打开MySQL技术文档,找到了错误所在之处。映射在脑海里的就有两种解决方法,一种就是更换本地实例化数据类型,从LocalDate换成Date型

最后在后端中修改传递类型

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
		try{
			Date startDate = dateFormat.parse(request.getParameter("startTime"));
			Date endTime = dateFormat.parse(request.getParameter("endTime"));
			a.setStartTime(startDate);
			a.setEndTime(endTime);
		}catch (Exception e){

		}

PS:Date类型默认为yyyy-mm-dd-HH-MM-SS,如果需要显示yyyy-mm-dd只需要更改传递的参数就可以

到此,困扰我两个半小时的bug终于得到解决。细节决定成败

借用张宇老师的一句话(改编版):一包烟 一杯酒 一个bug改一天

第二个方法就是改变传递的参数就可以啦,如果小伙伴们有更好的方法,欢迎在评论区不吝赐教

参考文献https://blog.csdn.net/qq_43008315/article/details/106602164

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MySQL中,当尝试插入一个不正确的日期时间值时,会出现错误“Data truncation: Incorrect date value: 'null' for column 'hydate' at row 1”。这个错误的原因是在一个datetime类型的列中插入了一个空值``,而空值并不符合YYYY-MM-DD HH:MM:SS格式的要求。 你需要确保插入的值是一个符合格式的日期时间值,或者使用0000-00-00 00:00:00表示没有时间。 对于你提供的引用,我没有找到与错误相关的信息。请确保你的查询语句中的日期值正确,并且没有空值。如果问题仍然存在,你可以检查列的定义是否与插入的值匹配,并确保使用正确的语法和引号。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Data truncation: Incorrect datetime value: ‘‘ for column ‘MODIFY_TIME‘ at row 1报错原因](https://blog.csdn.net/ChunwaiLeung/article/details/131965122)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [存储过程 Data truncation: Incorrect date value: ‘1988‘ for column ‘date‘ at row 1](https://blog.csdn.net/qq_33668999/article/details/108394191)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值