mysql查詢失敗-錯誤解決

症狀:

    mysq查詢報錯:java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp

情景:

  自己建了個表,寫入了一些數據,然後查詢的時候(select * from XXX limit 1)失敗了,這麼一條數據查詢都失敗,就蒙了。。

  經過查詢,問題也逐漸明朗:

  

     在java應用程序中,數據表中有記錄的time字段(屬性爲timestamp)其值爲:“0000-00-00 00:00:00”

  程序使用select 語句從中取數據時出現以下異常:java.sql.SQLException:Value '0000-00-00' can not be represented as java.sql.Date

  這是因爲 “0000-00-00 00:00:00”在mysql中是作爲一個特殊值存在的,但是在Java中, java.sql.Date 會被視爲 不合法的值,被JVM認爲格式不正確。

解決方法:

在jdbc的url加上   zeroDateTimeBehavior參數:

  datasource.url=jdbc:mysql://localhost:3306/pe?useUnicode=true&characterEncoding=gbk&zeroDateTimeBehavior=convertToNull

  

  加上這個的目的是,告訴java,當你讀取到一串0的日期時,不要報錯(默認是報錯),返回給我一個空就行。

  此外這個字段還有另一個值:zeroDateTimeBehavior=round   這個的意思是返回最近的一個時間如:0001-01-01   00:00:00.0,感覺沒啥用

 

總結:

  解決方法,修改數據庫連接串,添加zeroDateTimeBehavior=convertToNull

  另外,這個問題可以在寫入數據的時候就可以避免,所以在寫入時要謹慎些。

 

 

 

參考:

  https://blog.csdn.net/lp_cq242/article/details/80713197

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章