スキーマdb2admin
を含むta
というテーブルがあります。 db2 select tabname,tabschema from syscat.tables wheretabname='ta' and tabschema='db2admin'
を実行すると、行が返されました。これは、テーブルがそこにあることを意味します。
ただし、同じユーザーアカウントでクエリdb2 select * From db2admin.ta
を実行すると、次のエラーが発生しました。
SQL0204N "DB2ADMIN.TA"は未定義の名前です。 SQLSTATE = 42704
これの理由は何ですか?
DB2(他の標準準拠のSQLデータベースと同様)は、引用符で囲まれていない識別子を大文字に変換するため、select * from db2admin.ta
と言うと、DB2はスキーマ'TA'
で'DB2ADMIN'
という名前のテーブルを検索します。それがまさにエラーメッセージが伝えていることです。
SYSCAT.TABLES
クエリの結果によると、小文字の名前でテーブルとスキーマを作成しました。それらにアクセスするには、両方の識別子を(別々に)引用符で囲む必要があります。
select * from "db2admin"."ta"
二重引用符に注意してください。