복붙노트

[SQL] PostgreSQL의 테이블은 존재하지만 가져올 때 쿼리 "관계가 존재하지 않습니다"

SQL

PostgreSQL의 테이블은 존재하지만 가져올 때 쿼리 "관계가 존재하지 않습니다"

나는 테이블의 번호와 PostgreSQL의 DB를 가지고있다. I 쿼리 경우 :

SELECT column_name
FROM information_schema.columns
WHERE table_name="my_table";

나는 제대로 반환 된 열 목록을 얻을 것이다.

그러나, 나는 쿼리 :

SELECT *
FROM "my_table";

나는 오류가 발생합니다 :

(ProgrammingError) relation "my_table" does not exist
'SELECT *\n    FROM "my_table"\n' {}

나는 열을 얻을 수 있지만 테이블을 쿼리 할 수없는 이유에 대한 어떤 생각? 목표 테이블을 조회 할 수있다.

해결법

  1. ==============================

    1.당신은 스키마가 아닌 경우 공공 하나를 포함해야

    당신은 스키마가 아닌 경우 공공 하나를 포함해야

    SELECT *
    FROM <schema>."my_table"
    

    또는 당신은 당신의 기본 스키마를 변경할 수 있습니다

    SHOW search_path;
    SET search_path TO my_schema;
    

    여기 테이블 스키마를 확인

    SELECT *
    FROM information_schema.columns
    

    예를 들어 테이블은 확인이 의지가 모두 작동하는 기본 스키마 공공에있는 경우

    SELECT * FROM parroquias_region
    SELECT * FROM public.parroquias_region
    

    그러나 부문 스키마를 지정 필요

    SELECT * FROM map_update.sectores_point
    
  2. ==============================

    2.당신은 시도 할 수 있습니다:

    당신은 시도 할 수 있습니다:

    SELECT * 
    FROM public."my_table"
    

    MY_TABLE 근처 따옴표를 잊지 마세요.

  3. ==============================

    3.나는 테이블 이름에 따옴표를 포함했다.

    나는 테이블 이름에 따옴표를 포함했다.

    db=> \d
                               List of relations
     Schema |                     Name                      | Type  | Owner 
    --------+-----------------------------------------------+-------+-------
     public | COMMONDATA_NWCG_AGENCIES                      | table | dan
     ...
    
    db=> \d COMMONDATA_NWCG_AGENCIES
    Did not find any relation named "COMMONDATA_NWCG_AGENCIES".
    

    ???

    따옴표 :

    db=> \d "COMMONDATA_NWCG_AGENCIES"
                             Table "public.COMMONDATA_NWCG_AGENCIES"
              Column          |            Type             | Collation | Nullable | Default 
    --------------------------+-----------------------------+-----------+----------+---------
     ID                       | integer                     |           | not null | 
     ...
    

    많은 따옴표의 많은 :

    db=> select ID from COMMONDATA_NWCG_AGENCIES limit 1;
    ERROR:  relation "commondata_nwcg_agencies" does not exist
    LINE 1: select ID from COMMONDATA_NWCG_AGENCIES limit 1;
                           ^
    db=> select ID from "COMMONDATA_NWCG_AGENCIES" limit 1;
    ERROR:  column "id" does not exist
    LINE 1: select ID from "COMMONDATA_NWCG_AGENCIES" limit 1;
                   ^
    db=> select "ID" from "COMMONDATA_NWCG_AGENCIES" limit 1;
     ID 
    ----
      1
    (1 row)
    

    이것은이 덤프에서 TABLE 문이 아니라 따옴표를했다 CREATE 포스트 그레스 (11)이다 :

    DROP TABLE IF EXISTS "COMMONDATA_NWCG_AGENCIES";
    
    CREATE TABLE "COMMONDATA_NWCG_AGENCIES" (
    ...
    
  4. ==============================

    4.나는 포스트 그레스의 데이터가 DB를 덤프 복원 후 발생한 같은 문제가 없었다.

    나는 포스트 그레스의 데이터가 DB를 덤프 복원 후 발생한 같은 문제가 없었다.

    상황이 남쪽으로가는 시작 어디에 내 덤프 파일에서 아래의 명령을했다.

        SELECT pg_catalog.set_config('search_path', '', false);
    

    솔루션 :

    단순히 위의 명령은 모든 공개적으로 액세스 할 수있는 스키마를 비활성화합니다.

    여기 설명서에 대한 자세한 내용을 확인하십시오 https://www.postgresql.org/docs/9.3/ecpg-connect.html

  5. from https://stackoverflow.com/questions/36753568/postgresql-tables-exists-but-getting-relation-does-not-exist-when-querying by cc-by-sa and MIT license