說明: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 可以用來配置出現這種情況時的處理策略,該屬性有下列三個屬性值:
exception(不指定,則默認)---->默認拋出異常
convertToNull------->轉化爲null
round------->替換成最近的日期即XXXX-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的錯 誤。
(完)