一、前言:
最近再看郭嘉老师的SSH网上商城视频,本来培养计划上是要求一周之内弄完的,可是对SSH毫不熟知的我弄到现在还是还敲完。因为照着视频敲代码,总是会遇到各种问题,有时解决一个小问题半天时间就过去啦。
当看到订单模块时候,需要把订单保存到数据库中,我是完全照着视频敲的,本来想着能顺利运行呢,可是却报错啦。ERROR JDBC ExceptionReporter:234-Data truncation:Incorrect datetime value:for column 'ordertime' at row 1。也就是说ordertime插入失败。
二、探索:
刚开始还以为是自己疏忽在某个地方写错了呢,就用Beyond Compare对比了一下源码,却没有发现存在问题啊,我就懵逼啦,这明明写的都一样,咋我的就不能正常显示,难道是人品问题?
之后又百度了一番,发现了前人的博客ssh网上商城插入时间数据失败。这篇博客说,可能是Mysql5.6和Mysql5.5对于时间格式的数据有不同的限制。需要把WEB-INF下lib下的MySQL-connector-Java-5.0.4-bin.jar替换为mysql-connector-java-5.1.34-bin.jar就行。
但是替换jar包之后会遇到别名无法识别的问题,解决方法是在jdbc的url连接字符串最后加上&useOldAlisaMetadataBehavior=true。
哎呦我去,看来这个版本问题还真是烦人,咋jar包还有这个问题呢。。。
三、尝试:
不过我感觉更换jar包的方式有些繁琐,想换一种解决方式。于是开始了如下探索。
我怀疑可能是时间格式的问题,于是看数据库中是个的格式是:yyyy-MM-dd HH:mm:ss(年月日时分秒),那么java默认的时间格式是什么?如下图所示,怪不得会出问题呢。
发现问题的根源解决起来就非常容易啦,只需要把默认的时间格式改成yyyy-MM-dd HH:mm:ss就好。代码如下:
原因已经找出来了,具体在项目中怎么整自己探索吧。