Db2人类可读错误格式器

yur*_*ura 5 database db2 exception-handling

几乎所有DB2客户端都以格式返回错误

Error: DB2 SQL Error: SQLCODE=-407, SQLSTATE=23502, SQLERRMC=TBSPACEID=2, TABLEID=103, COLNO=0, DRIVER=3.57.82
SQLState:  23502
ErrorCode: -407
Run Code Online (Sandbox Code Playgroud)

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

use*_*656 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
Run Code Online (Sandbox Code Playgroud)

图片来源:我在http://www.dbforums.com/db2/1655517-how-find-table-tbspaceid-2-tableid-1583-a.html找到了这个


Mic*_*rek 2

DB2 版本 9 消息参考位于此处。尽管各个版本的消息非常一致,但您可能需要查找特定版本的消息参考。

在你的例子中,SQL 407 在这里

此外,正如消息参考所述,如果您想要自动翻译 DB2 错误消息,您可以执行以下操作:

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

?XXXnnnnnn

其中 XXX 表示有效的消息前缀,nnnnn 表示有效的消息编号。

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

?嗯嗯

或者

?恩

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

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