IBM Db2网络驱动程序SQL错误。没找到表名?

时间:2011-08-24 23:17:23

标签: sql db2

来自此查询:

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 个答案:

答案 0 :(得分:5)

乍一看,似乎DB2没有在webuser架构下找到该表名,或者当前连接用户的架构与该表的架构不匹配。尝试:

select * from webuser.table

如果失败,那么webuser模式下可能不存在,所以试着找出它所存在的模式。

您经常可以在sql error codes或DB2 UDB命令行中找到IBM DB2 infocenter的信息,如下所示:

db2 ? SQL0100

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

db2 ? SQLnnnnn 

其中nnnnn是错误代码。

您还经常可以通过搜索谷歌而不包括-来查找来自db2的sql错误代码的信息,因为谷歌会从搜索结果中删除带有破折号的字词。因此,搜索 sql code 204 而不是 sql code -204

您通常可以在sysibm.tablessyscat.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 . 

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

对于数据库管理员来说,此错误信息不那么简单,而且调整得更多。它可能最终有用,但我会首先尝试其他建议。这可能意味着某些软件包未绑定到数据库(如网络驱动程序的软件包)或数据库中的某些权限不正确或修订包未正确应用且缺少数据库过程。但是,它也可能是由-204引起的,只是后续的错误。

答案 1 :(得分:0)

SQLCODE=-727, SQLSTATE=56098可能会发生,如果select语句中的某一列名称中有错字。