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(공용 테이블 식)를 참조했지만 scope 않습니다.
CTE 정의를 가장 바깥쪽 쿼리로 이동합니다. 이것이 문의 시작이므로 문 내의 모든 곳에서 볼 수 있습니다.
개체가 있는 경우 'DROP TABLE'과 같은 DDL 문을 실행하시겠습니까?
다음과 같은
DROP TABLE <relationName> IF EXISTS
절을IF EXISTS
사용하여 문을 실행합니다.개체가 있다는 것을 알고 있지만?
SHOW TABLE
관리자에게 문의하여 부여된 테이블에 액세스할 수 있습니다. 스키마 및 카탈로그에 대한 액세스도 포함해야 할 수 있습니다.
테이블이나 뷰를 resolve 수 없는 이유는 불분명합니다.
이름 확인에 대한 자세한 설명은 테이블 및 뷰 해상도 를 참조하세요.
예
-- 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;