来自此查询:
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
非常感谢有关如何调查此问题的任何建议。
答案 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.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 .
其中action-type为2:隐式准备缓存的动态SQL语句
对于数据库管理员来说,此错误信息不那么简单,而且调整得更多。它可能最终有用,但我会首先尝试其他建议。这可能意味着某些软件包未绑定到数据库(如网络驱动程序的软件包)或数据库中的某些权限不正确或修订包未正确应用且缺少数据库过程。但是,它也可能是由-204引起的,只是后续的错误。
答案 1 :(得分:0)
SQLCODE=-727, SQLSTATE=56098
可能会发生,如果select语句中的某一列名称中有错字。