このクエリから:
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
問題を調査する方法についての提案は大歓迎です。
一見したところ、DB2はwebuser
スキーマの下でそのテーブル名を検出していないか、現在接続されているユーザーのスキーマがテーブルのスキーマと一致していないようです。試してみてください:
select * from webuser.table
それが失敗した場合は、おそらくwebuser
スキーマの下に存在しないため、どのスキーマの下に存在するかを調べてみてください。
sqlエラーコード の情報は、 IBM DB2 infocenter またはDB2UDBコマンドラインで次のように見つけることができます。
db2 ? SQL0100
この方法でエラーを検索できます。
db2 ? SQLnnnnn
ここで、nnnnn
はエラーコードです。
また、グーグルは検索結果からダッシュの前にある用語を削除するため、-
を含めずにグーグルで検索することにより、db2からのSQLエラーコードに関する情報を見つけることもできます。したがって、sql code 204
ではなくsql code -204
を検索してください。
通常、実行しているシステムのタイプ(z/OSまたはUDB)に応じて、またdb2管理者が制限しているかどうかに応じて、sysibm.tables
またはsyscat.tables
の下にすべてのテーブルのリストがあります。それらのカタログ表へのアクセス。
UDBインスタンスに対して実行している場合は、次を試してください。
select tabschema, tabname from syscat.tables
もちろん、テーブルの名前がtable
になることは期待していないと思います。これは、db2またはSQL-92標準で制限されているWordだと思います。
そのクエリを実行するストアドプロシージャを実行している場合は、クエリからの真のエラーが表示されない可能性があります。ストアドプロシージャは、クエリ自体からsqlcodeとsqlstateをキャッチして返すようにプログラムされていない限り、ストアドプロシージャ内のクエリとは異なるエラーコードを返すことがよくあります。
さらに、メッセージコードが2の-727のsqlcodeを取得していることがわかります。そのドキュメントには次のように書かれています。
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が原因である可能性もあり、その後のエラーである可能性があります。
SQLCODE=-727, SQLSTATE=56098
selectステートメントの列名の1つにタイプミスがあると、発生する可能性があります。