2011-08-24 21 views
6

de esta consulta: selecto * de la tablaibm db2 net driver error sql. ¿No encuentras el nombre de la tabla?

me sale el siguiente mensaje de error:

error: DB2 SQL Error: SQLCODE = -204, SQLSTATE = 42704, SQLERRMC = webuser.table, DRIVER = 4.8 0,87 Sqlstate: 42704 ErrorCode: -204 Error: DB2 SQL Error: SQLCODE = -727, SQLSTATE = 56098, SQLERRMC = 2; -204; 42.704; webuser.table, DRIVER = 08/04/87 Sqlstate: 56098 ErrorCode: -727

Cualquier sugerencia de cómo investigar el problema es mucho apreciado.

Respuesta

5

A primera vista, parece que DB2 no encuentra ese nombre de tabla bajo el esquema webuser, o el esquema del usuario conectado actual no coincide con el esquema de la tabla. Proveedores:

select * from webuser.table 

Si eso no funciona, entonces probablemente no existe bajo el esquema webuser, así que trate de averiguar qué esquema que existe bajo.

A menudo se puede encontrar información de sql error codes en el IBM DB2 infocenter o en la línea de mandatos de DB2 UDB, así:

db2 ? SQL0100 

puede buscar cualquier error de esta manera:

db2 ? SQLnnnnn 

donde nnnnn es el código de error

También puede encontrar a menudo información sobre el código de error sql de db2 buscando en google sin incluir el -, ya que Google elimina el término con un guión al frente de los resultados de búsqueda. Por lo tanto, busque sql code 204 y no sql code -204.

generalmente se puede encontrar una lista de todas las tablas bajo sysibm.tables o syscat.tables dependiendo de qué tipo de sistema (z/OS o UDB) se están ejecutando en, y también dependiendo de si el administrador de DB2 ha restringido el acceso a aquellos catálogo mesas.

Si está ejecutando en una instancia UDB, intente:

select tabschema, tabname from syscat.tables 

Estoy asumiendo por supuesto que usted no está esperando la mesa para ser nombrado table. Creo que es una palabra restringida bajo db2 o el estándar SQL-92.

Si está ejecutando un procedimiento almacenado que ejecuta esa consulta, es posible que no vea el error verdadero de la consulta. Los procedimientos almacenados a menudo devuelven un código de error diferente de lo que haría una consulta dentro del procedimiento almacenado, a menos que estén programados para capturar y devolver el sqlcode y el estado sql de la consulta misma.

Además, veo que está obteniendo un sqlcode de -727, con un código de mensaje de 2.La documentación para que diga:

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 . 

donde el tipo de acción es de 2: Preparación implícita de una sentencia de SQL dinámico en caché

Esta información de error es menos directa y más en sintonía para un administrador de base de datos. Puede terminar siendo útil, pero probaría las otras sugerencias primero. Puede significar que ciertos paquetes no están vinculados a la base de datos (como los de su controlador de red) o que ciertos permisos en la base de datos no son correctos o que un fixpack no se aplicó correctamente y faltan procedimientos de base de datos. Sin embargo, también podría ser causado por el -204 y simplemente ser un error posterior.

Cuestiones relacionadas