web-dev-qa-db-ja.com

SQL0204N "DB2ADMIN.TA"は未定義の名前です。 SQLSTATE = 42704

スキーマdb2adminを含むtaというテーブルがあります。 db2 select tabname,tabschema from syscat.tables wheretabname='ta' and tabschema='db2admin'を実行すると、行が返されました。これは、テーブルがそこにあることを意味します。

ただし、同じユーザーアカウントでクエリdb2 select * From db2admin.taを実行すると、次のエラーが発生しました。

SQL0204N "DB2ADMIN.TA"は未定義の名前です。 SQLSTATE = 42704

これの理由は何ですか?

3
cppBeginnnnner

DB2(他の標準準拠のSQLデータベースと同様)は、引用符で囲まれていない識別子を大文字に変換するため、select * from db2admin.taと言うと、DB2はスキーマ'TA''DB2ADMIN'という名前のテーブルを検索します。それがまさにエラーメッセージが伝えていることです。

SYSCAT.TABLESクエリの結果によると、小文字の名前でテーブルとスキーマを作成しました。それらにアクセスするには、両方の識別子を(別々に)引用符で囲む必要があります。

select * from "db2admin"."ta"

二重引用符に注意してください。

4
mustaccio