Db2人类可读错误格式器

时间:2011-11-04 10:23:42

标签: database exception-handling db2

几乎所有DB2客户端都以格式

返回错误
Error: DB2 SQL Error: SQLCODE=-407, SQLSTATE=23502, SQLERRMC=TBSPACEID=2, TABLEID=103, COLNO=0, DRIVER=3.57.82
SQLState:  23502
ErrorCode: -407

我应该谷歌搜索SQLCODE,而不是SQLState,然后尝试理解SQLERRMC的含义。这是耗时的...我想知道是否有工具解析这种格式并返回人性化格式化的错误,例如“你想在位置2中插入null,其中只有非空值可以...”

3 个答案:

答案 0 :(得分:5)

在SQL提示符下将'SQLERRMC = TBSPACEID = x,TABLEID = y,COLNO = z'转换为架构,表和列名称:

SELECT C.TABSCHEMA, C.TABNAME, C.COLNAME
FROM SYSCAT.TABLES AS T,
SYSCAT.COLUMNS AS C
WHERE T.TBSPACEID = x
AND T.TABLEID = y
AND C.COLNO = z
AND C.TABSCHEMA = T.TABSCHEMA
AND C.TABNAME = T.TABNAME

信用:我在http://www.dbforums.com/db2/1655517-how-find-table-tbspaceid-2-tableid-1583-a.html

找到了这个

答案 1 :(得分:2)

DB2版本9消息引用超过here。虽然从版本到版本的消息非常一致,但您可能希望找到特定版本的消息参考。

在您的情况下,SQL 407为here

此外,作为消息引用states,如果要自动转换DB2错误消息,可以执行以下操作:

  

要调用消息帮助,请打开命令行处理器并输入:

     

? XXXnnnnn

     

其中XXX表示有效的邮件前缀,nnnnn表示有效的邮件编号。

     

可以通过发出以下命令来检索与给定SQLSTATE值关联的消息文本:

     

? NNNNN

     

     

? NN

     

其中nnnnn是五位数的SQLSTATE(字母数字),nn是两位数的SQLSTATE类>代码(SQLSTATE值的前两位)。

在上面的情况下,你可以在CLP提示符下输入?SQL0407,你应该得到错误信息的描述。

答案 2 :(得分:0)

另外,请检查IBM实用程序QW,它可以帮助您轻松获取说明和可能的解决方案。