当我在DB2上通过JDBC调用SQL语句并且语句失败时,我会捕获带有以下消息文本的SQLException:
com.ibm.db2.jcc.a.nn: DB2 SQL Error: SQLCODE=-206, SQLSTATE=42703,
SQLERRMC=O.METADATENSATZ, DRIVER=3.52.95
Run Code Online (Sandbox Code Playgroud)
我尝试根据IBM发布的错误列表自动翻译消息,但是消息中的占位符引用了异常的其他元素.
在异常中查找这些元素时,我发现DB2ExceptionFormatter并尝试使用它来访问缺少的元素.
但在这里我停了下来,因为DB2ExceptionFormatter给了我一个线索:
尝试从服务器获取消息文本时出错.只有消息令牌可用.
所以我的问题是:我需要配置什么来从DB2服务器获取正确的消息?
如果我可以从服务器获得人类可读的消息,我可以直接使用它,而不必自己翻译它.
我不确定你在上面看到的是什么消息引用(它似乎是iSeries?)但你最好转到这里的DB2 Message Reference .
查找SQL0206将获取此页面,其中包含以下信息:
name在使用它的上下文中无效.
SQLERRMC是"O.METADATENSATZ"所以我认为这意味着你已经向DB2发送了一个SQL语句,它报告"O.METADATENSATZ"无效......列不存在或表" O"不存在.
如消息引用所述,如果要自动转换DB2错误消息:
要调用消息帮助,请打开命令行处理器并输入:
?XXXnnnnn
其中XXX表示有效的消息前缀,nnnnn表示有效的消息号.
可以通过发出以下命令来检索与给定SQLSTATE值关联的消息文本:
?NNNNN
要么
?NN
其中nnnnn是五位数的SQLSTATE(字母数字),nn是两位数的SQLSTATE类代码(SQLSTATE值的前两位).
在您的情况下,在DB2 CLP中键入"?SQL0206"将获得错误消息.
| 归档时间: |
|
| 查看次数: |
9967 次 |
| 最近记录: |