JAVA操作MySQL tImestamp列值為0時丟擲異常的處理~
JAVA連線MySQL資料庫,在操作值為0的timestamp型別時不能正確的處理,而是預設丟擲一個異常,就是所見的:java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 7 to TIMESTAMP。這一問題在官方文件中有詳細說明,詳見如下連結:
http://bugs.mysql.com/bug.php?id=19274
http://dev.mysql.com/doc/refman/5.5/en/connector-j-installing-upgrading.html
在JDBC連線串中有一項屬性:zeroDateTimeBehavior,可以用來配置出現這種情況時的處理策略,該屬性有下列三個屬性值:
l exception:預設值,即丟擲SQL state [S1009]. Cannot convert value....的異常;
l convertToNull:將日期轉換成NULL值;
l round:替換成最近的日期即0001-01-01;
因此對於這類異常,可以考慮通過修改連線串,附加zeroDateTimeBehavior=convertToNull屬性的方式予以規避,例如:
jdbc:mysql://localhost:3306/mydbname?zeroDateTimeBehavior=convertToNull
從另一個層面講,這類異常的觸發也與timestamp賦值的操作有關,如果能夠在設計階段和記錄寫入階段做好邏輯判斷,避免寫入'0000-00-00 00:00:00'這類值,那麼也可以避免出現Cannot convert value '0000-00-00 00:00:00' from column N to TIMESTAMP的錯誤。
關於MySQL timestamp型別的說明,可以參考: MySQL資料庫中的timestamp型別與時區
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-695531/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle主動丟擲異常Oracle
- Swift 中 throws 異常丟擲Swift
- 啪,還敢丟擲異常
- 高效Java:丟擲適合抽象的異常 - Kyle CarterJava抽象
- java多執行緒:執行緒體往外丟擲異常的處理機制實踐Java執行緒
- Java異常十一:使用throw丟擲異常物件;throw和throws的區別Java物件
- 建構函式中丟擲的異常函式
- OpenCV 3.0後的 xfeatures2d 中detect()函式丟擲異常處理OpenCV函式
- MySQL異常處理MySql
- Java 異常處理Java
- JAVA 異常處理Java
- JAVA異常處理Java
- migrate:rollback 時 dropForeign 丟擲的異常解決方案
- SpringBoot中SpringSecurity 中不能丟擲異常UserNameNotFoundException 問題解析與處理Spring BootGseException
- 用列舉來處理java自定義異常Java
- JAVA_異常處理Java
- Java--異常處理Java
- Java 異常處理六Java
- Java 異常表與異常處理原理Java
- java異常的處理機制Java
- Java 的異常處理機制Java
- MySQL Slave異常關機的處理MySql
- java異常處理筆記Java筆記
- Java異常處理機制Java
- Java異常處理(非常全面)Java
- 重學Java - 異常處理Java
- 【Java基礎】--異常處理Java
- MySQL定義異常和異常處理詳解MySql
- java中異常丟擲後程式碼還會繼續執行嗎Java
- C++程式丟擲異常後執行順序C++
- hibernate open session in view 丟擲異常解決方法SessionView
- 使用者職責丟失異常處理
- MySQL遊標和異常處理MySql
- Java 中的異常處理機制Java
- Java異常處理的陋習展播Java
- WCF服務端丟擲的異常會跑到客戶端服務端客戶端
- scope="session"和scope="request"--丟擲異常非常的bug+垃圾Session
- 異常篇——異常處理