Ошибка SQL сетевого драйвера IBM Db2.Не можете найти имя таблицы? - PullRequest
8 голосов
/ 25 августа 2011

из этого запроса:

select * from table

Я получаю следующие сообщения об ошибках:

Error: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=webuser.table, DRIVER=4.8.87
SQLState:  42704
ErrorCode: -204
Error: DB2 SQL Error: SQLCODE=-727, SQLSTATE=56098, SQLERRMC=2;-204;42704;webuser.table, DRIVER=4.8.87
SQLState:  56098
ErrorCode: -727

Любые предложения о том, как исследовать проблему, приветствуются.

Ответы [ 2 ]

5 голосов
/ 25 августа 2011

На первый взгляд кажется, что DB2 не находит это имя таблицы в схеме webuser, или схема текущего подключенного пользователя не соответствует схеме для таблицы.Попробуйте:

select * from webuser.table

Если это не удастся, то, вероятно, он не существует в схеме webuser, поэтому попробуйте выяснить, в какой схеме он существует.

Часто можно найтиинформация для sql кодов ошибок в Инфоцентр IBM DB2 или в командной строке DB2 UDB, например, так:

db2 ? SQL0100

Вы можете посмотреть любую ошибку следующим образом:

db2 ? SQLnnnnn 

, где nnnnn - код ошибки.

Вы также можете часто найти информацию о коде ошибки sql из db2, выполнив поиск в Google без включения -, так как Google удаляеттермин с тире впереди из результатов поиска.Итак, ищите sql code 204 , а не sql code -204 .

Обычно вы можете найти список всех таблиц в sysibm.tables или syscat.tables в зависимости от того, какую систему (z / OS или UDB) вы используете, а также от того, является ли администратор db2имеет ограниченный доступ к этим таблицам каталога.

Если вы работаете с экземпляром UDB, попробуйте:

select tabschema, tabname from syscat.tables

Я, конечно, предполагаю, что вы не ожидаете, что таблица будет названаtable.Я думаю, это ограниченное слово в db2 или в стандарте SQL-92.

Если вы запустили хранимую процедуру, которая выполняет этот запрос, то вы, возможно, не видите истинную ошибку в запросе.Хранимые процедуры часто возвращают код ошибки, отличный от запроса внутри хранимой процедуры, если только они не запрограммированы на перехват и возврат sqlcode и sqlstate из самого запроса.

Кроме того, я вижу, что вы получаете sqlcode-727, с кодом сообщения 2. Документация для этого говорит:

An error occurred during implicit system action type action-type . Information returned for the error includes SQLCODE sqlcode , SQLSTATE sqlstate and message tokens token-list . 

, где тип действия равен 2: неявная подготовка кэшированного динамического оператора SQL

Эта ошибкаинформация менее проста и более настроена для администратора базы данных.Это может оказаться полезным, но я сначала попробую другие предложения.Это может означать, что определенные пакеты не привязаны к базе данных (например, пакеты для вашего сетевого драйвера) или что определенные разрешения в базе данных не верны, или пакет исправлений был применен неправильно, и отсутствуют процедуры базы данных.Тем не менее, это также может быть вызвано -204 и просто последующей ошибкой.

1 голос
/ 22 апреля 2019

SQLCODE=-727, SQLSTATE=56098 может произойти, если в одном из имен столбцов в операторе выбора есть опечатка.

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