新电脑无聊搭个SSH玩玩,数据库用了比较新的mysql5.6,因为oracle启动占比较多资源,所以一般电脑开机都会开着mysql
其实我早也知道可能会出问题,因为我之前在网上看到过说mysql5.6的时间类型变化比较大
结果搭起环境插入到时间的数据问题就出来,具体报错信息如下:
=========================================
Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '' for column 'createdatetime' at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2926)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1571)
at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1124)
at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:676)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1166)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1082)
at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1067)
at com.alibaba.druid.filter.FilterChainImpl.preparedStatement_executeUpdate(FilterChainImpl.java:2721)
at com.alibaba.druid.filter.FilterAdapter.preparedStatement_executeUpdate(FilterAdapter.java:1069)
at com.alibaba.druid.filter.FilterEventAdapter
=========================================
上面的报错信息就看第一行,就知道,时间字段出现问题了
度娘了一下,暂时有两种方法解决:
方法一:把mysql的驱动jar包更新到最新的版本,本博文发出时间为止,最新的版本为5.1.34,下载地址我就没啦,我用maven的,
具体配置如下,懂得都懂
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.34</version> </dependency>
方法二:检查一下代码,
如果时间字段加了
@Temporal(TemporalType.TIMESTAMP)
的话,
请改成如下:
@Temporal(TemporalType.TIME)
上面是hibernate的注解,大家应该都知道吧,因为我是用注解的,所以XML的自己看着办
以上两种方法,均经过本人亲测,都可以成功插入数据的
还有第三种方法,
就是用5.6之前的版本—_—(这不废话嘛)
呵呵,本文结束