java.sql.DataTruncation: Data truncation at net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:382) at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2820) at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2258) at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:632) at net.sourceforge.jtds.jdbc.JtdsStatement.processResults(JtdsStatement.java:584)
一看这个错误提示就知道是数据内容过长,数据库列给的长度不够。原因知道,但是排查这个问题花了我差不多三个小时,就是一番的跟踪调试,把全部内容都去掉,就剩一个ID主键,直接插入还提示这个错误,真的弄的百思不得其解。最后把出入语句放在sql server客户端执行,报的错终于让我豁然开朗了。
消息 8115,级别 16,状态 2,第 1 行 将 expression 转换为数据类型 datetime 时出现算术溢出错误。 语句已终止。
意思是转换日期错误,但是我没有给这个类型的字段赋值,一想到sql server有个默认值,最后把那个默认值去掉就解决问题了。
教训:sqlserver 建字段的时候,要注意默认值的设置,特别是日期时间类型的。