TABLE_OR_VIEW_NOT_FOUND エラー クラス
テーブルまたはビュー <relationName>
が見つかりません。 スキーマとカタログのスペルと正確さを確認します。
スキーマで名前を修飾しなかった場合は、current_schema() 出力を確認するか、正しいスキーマとカタログで名前を修飾します。
ドロップ時のエラーを許容するには、DROP VIEW IF EXISTS または DROP TABLE IF EXISTS を使用します。
パラメーター
- relationName: 見つからない指定の関係 (テーブルまたはビュー) の名前。
説明
永続化されたテーブルとビューは、<catalog>.<schema>.<relation>
という 3 つの名前部分で構成されます。
名前の 3 つの部分の一部を指定しない場合でも、現在のカタログまたは現在のスキーマを使用して暗黙的に名前が完成します。
これは、パスを完全に指定する場合を除いて、ファイル システムの作業ディレクトリによって、どのファイルを表示できるかに与える影響に似ています。
一時ビューまたは共通テーブル式 (CTE) は、セッションまたはクエリ内にのみ存在し、修飾してはなりません。
テーブルまたはビューが見つからない最も一般的な理由は、次のとおりです。
- オブジェクトが単に存在しない。
- オブジェクト名、スキーマ、またはカタログのスペルが間違っていた。
- オブジェクトが現在のスキーマに置かれていない。
- ユーザーはオブジェクトへのアクセス権がないため、ユーザーには表示されない。
対応策
エラーの対応策はエラーの原因によって異なります。
テーブルまたはビュー、スキーマ、カタログ名のスペルが正しくありませんか?
スペルを修正します。
名前を完全修飾せず、
VALUES current_schema()
の結果がテーブルまたはビューの修飾名と一致していませんか?スキーマとカタログで
relationName
を明示的に修飾するか、USE SCHEMA
コマンドを発行して目的の暗黙的なスキーマを設定します。一時的なビューを参照しましたが、以前、期限切れ、または別のセッションにありましたか?
CREATE TEMPORARY VIEW <relationName> …
を使用して一時ビューを再作成するか、永続的なビューの使用に切り替えます。共通テーブル式 (CTE) を参照しましたが、範囲外ですか?
CTE の定義を最も外側のクエリに移動します。 これはステートメントの先頭であるため、ステートメント内のすべての場所に表示されます。
万が一オブジェクトが存在する場合に "DROP TABLE" などの DDL ステートメントを発行しますか?
IF EXISTS
句を使用して ステートメントを発行します (例:DROP TABLE <relationName> IF EXISTS
)。オブジェクトが存在することがわかっていますが、
SHOW TABLE
に表示されませんか?許可されたテーブルにアクセスするには、管理者に問い合わせてください。 これには、スキーマとカタログへのアクセスも含める必要がある場合があります。
テーブルまたはビューを解決できない理由が不明ですか?
名前解決の詳細な説明については、「テーブルとビューの解決」を参照してください。
例
-- The table is located in othercat.someschema
> SELECT count(*) FROM t;
[TABLE_OR_VIEW_NOT_FOUND] The table or view `t` cannot be found.
> VALUES current_schema();
default
-- Change the current schema
> USE SCHEMA othercat.someschema;
> SELECT count(*) FROM T;
1
-- Alternatively qualify the table
> SELECT count(*) FROM othercat.someschema.t;
1
-- A reference to a CTE in the wrong scope:
> SELECT count(1) FROM (WITH v(c1) AS (VALUES (1)) VALUES(2)) AS t(c1), v;
[TABLE_OR_VIEW_NOT_FOUND] The table or view `v` cannot be found.
-- Move the CTE to top level
> WITH v(c1) AS (VALUES (1))
SELECT count(1) FROM VALUES(2) AS t(c1), v;
1
-- Dropping a non existing view
> DROP VIEW v;
[TABLE_OR_VIEW_NOT_FOUND] The table or view `v` cannot be found.
> DROP VIEW IF EXISTS v;