SQL state [99999]; error code [17001]; 问题处理

来源:互联网 发布:matlab读取数据和文件 编辑:程序博客网 时间:2024/05/01 13:23

最近遇到一个问题好几天没找着问题出处,报异常:

org.springframework.jdbc.UncategorizedSQLException: Hibernate flushing: Could not execute JDBC batch update; uncategorized SQLException for SQL [update ORDER_PRICE_FORECST_2014 set GMT_CREATE=?, GMT_MODIFIED=?, CREATE_BY=?, LAST_MODIFIED_BY=?, LS_CODE=?, CODE=?, AREA=?, CUS_JYT=?, CUS_JYT_NAME=?, COUNTRY=?, JYTZ=?, PL_DLCODE=?, PL_DLNAME=?, PL_MANAGER=?, SALES_TYPE=?, IFOTC=?, COM_CODE=?, COM_NAME=?, QUDAOFL=?, CUS_CODE=?, CUS_NAME=?, HT_CODE=?, PL_JYT=?, PL_JYT_NAME=?, XLGT=?, PL_CODE=?, FACTORY_CODE=?, JBX=?, MODEL_KH=?, XSPP=?, CPLY=?, CPCD=?, PL_TYPE=?, SS_DATE=?, YBKPJ=?, YBBZ=?, USD_HL=?, USD_KPJ=?, GD_PERCENT=?, BDFY_TOTAL=?, YJ=?, FL=?, CC=?, ECWL=?, SHFY=?, SHRYCB=?, XSBMZZYYF=?, GGF=?, CWFY=?, SJ=?, CGCB_TOTAL=?, YCWL=?, GSQG=?, OTC_TOTAL=?, INCOTERMS=?, CJJG=?, CJBZ=?, USD_HL2=?, Z_USD=?, PPGG_FL=?, PPGG_JE=?, ZFKHZC_FL=?, ZFKHZC_JE=?, GK=?, X_USD=?, ZXL=?, DTYBF=?, FOBJJ=?, HWFWF690_FL=?, HWFWF690_JE=?, CK_YHLXTS=?, CK_YHLXFL=?, CK_YHLXJE=?, CKFY_FL=?, CKFY_JE=?, CK_XYX_FL=?, CK_XYX_JE=?, PLGLFY_FL=?, PLGLFY_JE=?, PLSHWXF_FL=?, PLSHWXF_JE=?, YFF_FL=?, YFF_JE=?, GDZZFY=?, BDZZFY=?, GYFZXS=?, GDJE=?, BDJE=?, CLCBBZ=?, CLCB_USD=?, CGFWFY=?, GNWCCP=?, GCCCP=?, YCL=?, HZZB=?, JJFY=?, QLCCLMLL=?, QLCBDFYL=?, QLCGDFYL=?, QLCFYLLHJ=?, BJGXL=?, DTQLCLR=?, DTQLCLRLV=?, DTOTCHJLR=?, DTOTCHJLRLV=?, DTGCHJLR=?, DTGCHJLRLV=?, ZQLCLR=?, DDYZ=?, YS_TATOL=?, YS_QTY1=?, YS_QTY2=?, YS_QTY3=?, YS_QTY4=?, YS_QTY5=?, YS_QTY6=?, YS_QTY7=?, YS_QTY8=?, YS_QTY9=?, YS_QTY10=?, YS_QTY11=?, YS_QTY12=?, YSJE_TATOL=?, YSJE_JE1=?, YSJE_JE2=?, YSJE_JE3=?, YSJE_JE4=?, YSJE_JE5=?, YSJE_JE6=?, YSJE_JE7=?, YSJE_JE8=?, YSJE_JE9=?, YSJE_JE10=?, YSJE_JE11=?, YSJE_JE12=?, BYEAR=?, FLAG=? where id=?]; SQL state [99999]; error code [17001]; 内部错误: Overflow Exception trying to bind NaN; nested exception is java.sql.BatchUpdateException: 内部错误: Overflow Exception trying to bind NaN
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)
at org.springframework.orm.hibernate3.HibernateTransactionManager.convertJdbcAccessException(HibernateTransactionManager.java:806)
at org.springframework.orm.hibernate3.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:792)
at org.springframework.orm.hibernate3.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:665)


在网上搜原因说是被除数为0引起的,可是对用到的updateForecast2014这个方法进行添加了抛出Exception还是报这个问题,昨天处理另一个导入更新问题的时候无意间发现原来确实是因为被除数为0引起的,只是没有找对方法,然后给增加了if/else的判断,就不报错误了。



还有就是因为这个数据是导出之后才显示的,本来应该导出后直接导入数据就可以但是因为这个是0就出现了问题,这个导出的数据是对美元的开票价,可能有些小币种一相除就会很小,而数据库表里对这个字段的定义精度是小数点后2位,所以需要将这个字段的精度修改一下,最好改成精度为6位,因为表中已经有数据不能直接修改,就在表中新增一个字段,将新增字段的值update为原来字段值,然后清空原来字段修改精度,然后再将新字段值赋给原字段,删除新字段即可。

0 0
原创粉丝点击