說(shuō)明:JAVA連接MySQL數(shù)據(jù)庫(kù)忍级,在操作值為0的timestamp類型時(shí)不能正確的處理帆谍,而是默認(rèn)拋出一個(gè)異常,就是所見的:java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 7 to TIMESTAMP轴咱。這一問(wèn)題在官方文檔中有詳細(xì)說(shuō)明汛蝙,詳見如下鏈接:http://bugs.mysql.com/bug.php?id=19274
http://dev.mysql.com/doc/refman/5.5/en/connector-j-installing-upgrading.html
JDBC連接有一項(xiàng)屬性:zeroDateTimeBehavior 可以用來(lái)配置出現(xiàn)這種情況時(shí)的處理策略,該屬性有下列三個(gè)屬性值:
exception(不指定朴肺,則默認(rèn))---->默認(rèn)拋出異常
convertToNull------->轉(zhuǎn)化為null
round------->替換成最近的日期即XXXX-01-01
因此對(duì)于這類異常窖剑,可以考慮通過(guò)修改連接串,附加zeroDateTimeBehavior=convertToNull屬性的方式予以規(guī)避戈稿,例如:
jdbc:mysql://localhost:3306/mydbname?zeroDateTimeBehavior=convertToNull
從另一個(gè)層面講西土,這類異常的觸發(fā)也與timestamp賦值的操作有關(guān),如果能夠在設(shè)計(jì)階段和記錄寫入階段做好邏輯判斷鞍盗,避免寫入 '0000-00-00 00:00:00'這類值需了,那么也可以避免出現(xiàn) Cannot convert value '0000-00-00 00:00:00' from column N to TIMESTAMP的錯(cuò) 誤。
(完)