Db2 удобочитаемый форматировщик ошибок - PullRequest
5 голосов
/ 04 ноября 2011

Почти все клиенты для 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, где возможны только ненулевые значения ...»

Ответы [ 3 ]

5 голосов
/ 26 марта 2014

Чтобы преобразовать 'SQLERRMC = TBSPACEID = x, TABLEID = y, COLNO = z' в имена схем, таблиц и столбцов в приглашении SQL:

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

2 голосов
/ 04 ноября 2011

Ссылка на сообщение DB2 версии 9 превышает здесь . Хотя сообщения от версии к версии довольно согласуются, вы можете найти ссылку на сообщение для вашей конкретной версии.

В вашем случае, SQL 407 здесь .

Кроме того, поскольку в ссылке на сообщение указано , если вы хотите автоматически переводить сообщения об ошибках DB2, вы можете сделать следующее:

Чтобы вызвать справку по сообщениям, откройте процессор командной строки и введите:

? XXXnnnnn

где XXX представляет действительный префикс сообщения, а nnnnn представляет действительный номер сообщения.

Текст сообщения, связанный с данным значением SQLSTATE, можно получить, введя:

? NNNNN

или

? пп

где nnnnn - это пятизначный SQLSTATE (буквенно-цифровой), а nn - двухзначный код класса SQLSTATE> (первые две цифры значения SQLSTATE).

В приведенном выше случае вы можете ввести? SQL0407 в командной строке CLP, и вы должны получить описание сообщения об ошибке.

0 голосов
/ 05 ноября 2011

Кроме того, проверьте наличие утилиты IBM QW, которая может помочь вам получить описание и возможные решения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...