TABLE_OR_VIEW_NOT_FOUND 오류 클래스
테이블 또는 뷰 <relationName>
찾을 수 없습니다. 스키마 및 카탈로그의 맞춤법 및 정확성을 확인합니다.
스키마로 이름을 한정하지 않은 경우 current_schema() 출력을 확인하거나 올바른 스키마 및 카탈로그로 이름을 한정합니다.
오류를 허용하려면 삭제 시 DROP VIEW IF EXISTS 또는 DROP TABLE IF EXISTS를 사용하십시오.
매개 변수
- relationName: 찾을 수 없는 지정된 관계(테이블 또는 뷰)의 이름입니다.
설명
지속형 테이블 및 뷰는 세 부분의 이름, 즉 <catalog>.<schema>.<relation>
로 구성됩니다.
이름의 세 부분을 모두 지정하지 않으면 현재 카탈로그 또는 현재 스키마를 사용하여 암시적으로 완료됩니다.
이는 경로를 완전히 지정하지 않는 한 파일 시스템의 작업 디렉터리가 볼 수 있는 파일에 영향을 주는 방식과 유사합니다.
임시 뷰 또는 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;