场景:SQL错误 - datetime数据截断 - 用java /休眠/ timestamp属性
我已经接收个XML,解析他们的servlet(使用JAXB),仍然存在解析数据到MySQL数据库(使用休眠)并保存xml的副本以供将来参考。 解析失败时也会保存这个xml。 在这些情况下,我会收到一封包含错误摘要的电子邮件,然后检查保存的xml以找出错误的线索。
该操作运行相当顺利。该servlet每天接收几千xmls。
问题:
每天至少一次,我得到这样的错误:
org.hibernate.exception.DataException: could not insert ..........
Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '20122012-01-22 15:20:51' for column 'createdAt' at row 1
我得到这个错误对其他一些“列”为好。 这些列是mysql端的日期时间类型,而java端是java.sql.Timestamp
。
当我看看这是收到我看到正确的日期格式的XML:“2012-01-22 15时二十分51秒”
任何想法可能是什么出了问题?
看起来真奇怪。我怀疑还有另外一个将数据插入这个表的过程(也许也可以通过Hibernate,但HQL?)。尝试设置'org.hibernate.SQL = TRACE'日志级别,并确保源代码正是您所期望的。 – 2012-02-19 13:35:43
我会在几天后尝试这个,在其他东西上工作...... – samz 2012-02-21 07:54:28