IBM Db2 网络驱动程序 SQL 错误.找不到表名? [英] IBM Db2 net driver SQL error. Not finding table name?

查看:37
本文介绍了IBM Db2 网络驱动程序 SQL 错误.找不到表名?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

来自这个查询:

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

非常感谢任何有关如何调查该问题的建议.

Any suggestions for how to investigate the problem is much appreciated.

推荐答案

乍一看,DB2好像没有在webuser schema下找到那个表名,或者是当前连接的schema用户与表的架构不匹配.试试:

At first glance, it seems that DB2 is not finding that table name under the webuser schema, or the schema of the current connected user does not match the schema for the table. Try:

select * from webuser.table

如果失败,那么它可能不存在于 webuser 架构下,因此请尝试找出它确实存在于哪个架构下.

If that fails, then it probably does not exist under the webuser schema, so try to find out what schema it does exist under.

您经常可以找到有关 sql 错误代码IBM DB2 信息中心 或 DB2 UDB 命令行,如下所示:

You can often find information for sql error codes in the IBM DB2 infocenter or on the DB2 UDB command line like so:

db2 ? SQL0100

您可以通过这种方式查找任何错误:

You can look up any error this way:

db2 ? SQLnnnnn 

其中 nnnnn 是错误代码.

您通常还可以通过在 google 上搜索而不包括 - 来从 db2 中找到有关 sql 错误代码的信息,因为 google 从搜索结果中删除了前面带有破折号的术语.因此,搜索 sql code 204 而不是 sql code -204 .

You can also often find information on sql error code from db2 by searching on google without including the - since google removes the term with a dash in front from the search results. So, search for sql code 204 and not sql code -204 .

您通常可以在 sysibm.tablessyscat.tables 下找到所有表的列表,具体取决于您的系统类型(z/OS 或 UDB)运行,还取决于 db2 管理员是否限制了对这些目录表的访问.

You can usually find a list of all the tables under sysibm.tables or syscat.tables depending on what type of system (z/OS or UDB) you are running on, and also depending on if the db2 administrator has restricted access to those catalog tables.

如果您针对 UDB 实例运行,请尝试:

If you are running against a UDB instance, try:

select tabschema, tabname from syscat.tables

我当然假设您不希望该表被命名为 table.我认为这是 db2 或 SQL-92 标准下的限制词.

I'm assuming of course that you are not expecting the table to be named table. I would think that is a restricted word under db2 or the SQL-92 standard.

如果您碰巧正在运行运行该查询的存储过程,那么您可能看不到查询中的真正错误.存储过程通常会返回与存储过程中的查询不同的错误代码,除非它们被编程为从查询本身捕获并返回 sqlcode 和 sqlstate.

If you happen to be running a stored procedure that runs that query, then you may not be seeing the true error from the query. Stored procedures often return a different error code than a query inside the stored procedure would, unless they are programmed to catch and return the sqlcode and sqlstate from the query itself.

此外,我看到您得到的 sqlcode 为 -727,消息代码为 2.该文档说:

Additionally, I see that you are getting a sqlcode of -727, with a message code of 2. The documentation for that says:

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 . 

action-type 为 2:隐式准备缓存的动态 SQL 语句

where the action-type is 2: implicit prepare of a cached dynamic SQL statement

对于数据库管理员来说,此错误信息不太直接,但更适合.它可能最终会很有用,但我会先尝试其他建议.这可能意味着某些包未绑定到数据库(如用于您的网络驱动程序的包)或数据库中的某些权限不正确或未正确应用修订包并且缺少数据库过程.但是,它也可能是由 -204 引起的,只是后续错误.

This error information is less straightforward and more tuned for a Database Administrator. It may end up being useful but I would try the other suggestions first. It may mean that certain packages are not bound to the database (like the ones for your net driver) or that certain permissions in the database are not correct or a fixpack was not applied correctly and there are missing database procedures. However, it could also be caused by the -204 and just be a subsequent error.

这篇关于IBM Db2 网络驱动程序 SQL 错误.找不到表名?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆