次の方法で共有


TABLE_OR_VIEW_NOT_FOUND エラー条件

SQLSTATE: 42P01

テーブルまたはビュー <relationName> が見つかりません。 スキーマとカタログのスペルと正確性を確認します。

スキーマで名前を修飾しなかった場合は、current_schema() 出力を確認するか、名前を正しいスキーマとカタログで修飾します。

ドロップ時のエラーを許容するには、IF EXISTS DROP VIEW 使用するか、IF EXISTS を DROP TABLE します。

パラメーター

  • 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;