mysql5.6版本java插入时间的错误

新电脑无聊搭个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之前的版本—_—(这不废话嘛)

呵呵,本文结束

原文地址:https://www.cnblogs.com/ForeVerWater/p/4100853.html