首页 > 解决方案 > SQL0443 error when executing a Select with a Trigger on DB2 for iSeries

问题描述

I've some problem querying a db2/as400 table, let's call it TAB1. Since it was added a trigger on this table when I perform a normal SELECT (using the TAB1-key) I get the following error. Never had a problem before the trigger was created.

It's a query performed in a batch-application (Java 1.6) using Modern Batch and Spring Batch 2.1.8. No chance to update the libraries, since the program is quite old and the customers won't agree.

Anyway,I would say it's a trigger problem ( as the sql codes say) but different applications perform different SELECTs on TAB1 and they never get any similar problem.The batch perform more or less 40000 select like this, and just 300 fail with this error.

Any idea, tip, suggestion?

### Error querying database.  Cause: java.sql.SQLException: [SQL0443] *N *N  
### The error may exist in class path resource [eu/mycompany/el20/dq/as400/dataaccess/mappers/tab1/Tab1Mapper.xml]  
### The error may involve eu.mycompany.el20.dq.as400.dataaccess.persistence.tab.Tab1Mapper.selectByExample-Inline  
### The error occurred while setting parameters  
### SQL: select * from  TAB1 WHERE (  D10_SOC = ? and D10_COD_NDG = ?  and D10_DATE = ? )  
### Cause: java.sql.SQLException: [SQL0443] *N *N  
; uncategorized SQLException for SQL []; SQL state [38501]; error code [-443]; [SQL0443] *N *N; nested exception is java.sql.SQLException: [SQL0443] *N *Nstack trace: org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:83)  
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)  
org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:80)  
org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:71)  
org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:365)  
com.sun.proxy.$Proxy120.selectList(Unknown Source)  
org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:195)  
org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:124)  
org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:90)  
org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:40)  
com.sun.proxy.$Proxy136.selectByExample(Unknown Source)  
eu.mycompany.el20.dq.as400.crud.services.tab.BLSTab1.select(BLSTab1.java:46)  
it.mycompany.xframe.dq.batch.steps.programstep.ProgramExecutor.processRecord(ProgramExecutor.java:544)  
com.ibm.websphere.batch.devframework.steps.technologyadapters.GenericXDBatchStep.processRecord(GenericXDBatchStep.java:263)  
com.ibm.websphere.batch.devframework.steps.technologyadapters.GenericXDBatchStep.processJobStep(GenericXDBatchStep.java:227)  
com.ibm.ws.gridcontainer.batch.impl.StepManagerImpl._regularJobBatchLoop(StepManagerImpl.java:1065)  
com.ibm.ws.gridcontainer.batch.impl.StepManagerImpl.executeStep(StepManagerImpl.java:390)  
com.ibm.ws.gridcontainer.security.actions.ExecuteStepBatchUserPrivilegedAction.executeAction(ExecuteStepBatchUserPrivilegedAction.java:47)  
com.ibm.ws.gridcontainer.security.AbstractUserPrivilegedAction.runWithoutSecurity(AbstractUserPrivilegedAction.java:66)  
com.ibm.ws.gridcontainer.services.impl.WASRunUnderCredentialServiceImpl.runUnderUserCredential(WASRunUnderCredentialServiceImpl.java:134)  
com.ibm.ws.gridcontainer.services.impl.WASRunUnderCredentialServiceImpl.runActionUnderUserCredential(WASRunUnderCredentialServiceImpl.java:386)  
com.ibm.ws.gridcontainer.batch.impl.JobManagerImpl._sequentialStepScheduling(JobManagerImpl.java:783)  
com.ibm.ws.gridcontainer.batch.impl.JobManagerImpl.executeJob(JobManagerImpl.java:199)  
com.ibm.ws.batch.BatchJobControllerWork._runJob(BatchJobControllerWork.java:435)  
com.ibm.ws.batch.BatchJobControllerWork.run(BatchJobControllerWork.java:241)  
com.ibm.ws.asynchbeans.J2EEContext$RunProxy.run(J2EEContext.java:271)  
java.security.AccessController.doPrivileged(AccessController.java:399)  
com.ibm.ws.asynchbeans.J2EEContext.run(J2EEContext.java:797)  
com.ibm.ws.asynchbeans.WorkWithExecutionContextImpl.go(WorkWithExecutionContextImpl.java:222)  
com.ibm.ws.asynchbeans.ABWorkItemImpl.run(ABWorkItemImpl.java:206)  
java.lang.Thread.run(Thread.java:790)

标签: db2spring-batchibm-midrangedb2-400

解决方案


消息 SQL0443 的文本是“触发程序或外部例程检测到错误”。

我建议查看 JDBC 连接的主机数据库服务器作业。

在 IBM i 命令行上,运行命令WRKOBJLCK OBJ(<user>) OBJTYPE(*USRPRF)(其中 <user> 是您用于执行 JDBC 连接的用户配置文件)并找到名为QZDASOINIT. 这些是数据库主机服务器作业。

在这些作业中,查看作业日志(或作业日志假脱机文件)以找到 SQL0443 消息……围绕该消息,您应该看到实际错误是什么。


推荐阅读