2011-08-24 39 views
6

從該查詢: SELECT * FROM表ibm db2 net driver sql錯誤。沒有找到表名?

我收到以下錯誤信息:

錯誤:DB2 SQL錯誤:SQLCODE = -204,SQLSTATE = 42704,則sqlerrmc = webuser.table,DRIVER = 4.8 0.87 SQLSTATE:42704 錯誤碼:-204 錯誤:DB2 SQL錯誤:SQLCODE = -727,SQLSTATE = 56098,則sqlerrmc = 2; -204; 42704; webuser.table,DRIVER = 87年4月8日 SQLSTATE:56098 ErrorCode:-727

如何調查問題的任何建議是多少讚賞。

回答

5

乍一看,DB2似乎沒有在webuser模式下找到該表名,或者當前連接用戶的模式與該表的模式不匹配。嘗試:

select * from webuser.table 

如果失敗,那麼它可能不會在webuser模式下存在,所以要儘量找出模式它不存在下。

你經常可以找到sql error codes信息在IBM DB2 infocenter或像這樣的DB2 UDB命令行:

db2 ? SQL0100 

你可以查找任何錯誤是這樣的:

db2 ? SQLnnnnn 

其中nnnnn是錯誤代碼。

您也可以經常通過在谷歌上搜索而從db2中找到有關sql錯誤代碼的信息,而不包括-,因爲google會從搜索結果中刪除前面的短劃線。因此,搜索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,否則存儲過程通常會返回與存儲過程中的查詢不同的錯誤代碼。

此外,我看到你正在得到-727的sqlcode,消息代碼爲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而造成的,並且只是後續的錯誤。

相關問題