用Mysql5.6出現時間問題Incorrect datetime value: '' for column 'createtime'

今天部署服務器項目運行,當遇見有時間數據對象的插入和更新操作的時候,就報錯,如下:

Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '' for column 'createtime' at row 1 at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2868) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573) at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1160) at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:685) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1400) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1314) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1299) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:105) at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:94) at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:57) ... 109 more


因爲在測試服務器上該項目是正常的,所以比較納悶,項目是一樣的都是hibernate3.6,那就是JDK版本,MySQL版本,還有Tomcat版本不一樣導致。最終排除其它,鎖定在MySQL版本問題上,我在測試上用的是5.1版本,服務器上使用的是最新的5.6版本;看到網上說5.6對時間類型做了調整,於是果斷換成5.5的Mysql64位。測試,通過,正常。

所以,遇見該問題解決方法,目前是換數據庫版本,因爲是5.6版本比較新,我在網上還沒有找到什麼解決方案,如果哪位高手有更好的解決方案,請下面留言,大家一起學習,共同進步。

---------------------------------------------

事隔多日,回看這個問題,自己又在工作中遇見該問題,所以將此問題按照樓下大俠的指導修改了一下,驗證,該解決方案正確

解決方法如下:

找到你項目中的mysql-connector-java的架包

將此更新到最新版本,我目前項目使用的環境是:java7,

使用的jar包是:mysql-connector-java-5.1.31.jar

經過我的測試沒有問題。

如果你的環境是java6,這個jar也是可以的。

完成


如果幫到了你,請下面留下腳印,以作鼓勵。

發佈了33 篇原創文章 · 獲贊 25 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章