几乎所有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,其中只有非空值可以...”
答案 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
,它可以帮助您轻松获取说明和可能的解决方案。