java.sql.DataTruncation: Data truncation问题处理

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 建字段的时候,要注意默认值的设置,特别是日期时间类型的。

猜你喜欢

转载自wang9907.iteye.com/blog/2309266