请教生产系统中出现的Batch failure问题,非常感谢!

各位老师,生产系统昨晚出现一个Batch failure问题,搞到2点多也没什么思路,今天继续过来搞,还请各位指教,非常感谢!环境:AIX P550小型机,DB2 9.7.5,Websphere 6.1.43 diaglog级别是info,里面没有error信息,只有几个无关的event 信息,systemout日志如下,搜索SQL Error: -4229和SQL Error...显示全部

各位老师,生产系统昨晚出现一个Batch failure问题,搞到2点多也没什么思路,今天继续过来搞,还请各位指教,非常感谢!

环境:AIX P550小型机,DB2 9.7.5,Websphere 6.1.43 diaglog级别是info,里面没有error信息,只有几个无关的event 信息,systemout日志如下,搜索SQL Error: -4229和SQL Error: -302, SQLState: 22001 ibm网站上显示插入时字段超过约束限制,但是奇怪的是日志中红色显示的错误。,这个操作是一个查询操作,判断是否存在相同记录,查询操作为什么会产生batch update错误?
在命令行上,向该表插入也不存在问题,是否遇到过类似的问题,怎么解决?

收起
参与12

查看其它 8 个回答lxcorange的回答

lxcorangelxcorange软件架构设计师某券商
在网上搜到的一个原因,按照这样是不是我报出的查询操作的异常是一个假象,实际的异常没有捕获到,我需要用Int[] results = ps.executeBatch(); 捕获异常,找到真正原因?

3. 使用批处理时,当批处理中有一条SQL语句优化SQL异常而导致整个批处理失败。在打印日志时应该注意,以上的打印方式对问题定位没有任何帮助。如上如果其中的一条SQL语句执行失败,那么你不知道究竟是什么异常,因为没有打印异常列,而只打印了最顶层异常。例如:如上程序在DB2数据库中执行失败后,只返回了如下信息com.ibm.db2.jcc.c.vd: Non-atomic batch failure.  The batch was submitted, but at least one exception occurred on an individual member of the batch. Use getNextException() to retrieve the exceptions for specific batched elements.大概意思是批处理执行失败,批处理已经提交,但是其中至少有一条或者多条执行失败。使用getNextException来查看执行白失败的SQL语句异常信息,便于定位!可是这样还是有问题,你知道了SQL语句的异常了,但是你不知道究竟是那条SQL语句导致的异常,其实可以更具批处理执行的返回值来检查执行结果。
Int[] results = ps.executeBatch();
互联网服务 · 2013-06-29
浏览7108

回答者

lxcorange
软件架构设计师某券商
擅长领域: 大数据数据库数据仓库

lxcorange 最近回答过的问题

回答状态

  • 发布时间:2013-06-29
  • 关注会员:2 人
  • 回答浏览:7108
  • X社区推广