postgresql 테이블이 있지만 쿼리할 때 "관계가 존재하지 않습니다"를 가져옵니다.
나는 많은 테이블이 있는 postgresql db를 가지고 있습니다.질문하는 경우:
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' {}
왜 제가 칼럼을 받을 수 있는데 표를 조회할 수 없는지에 대한 의견이 있으십니까?목표는 테이블을 쿼리할 수 있는 것입니다.
공용 스키마가 아닌 경우 스키마를 포함해야 합니다.
SELECT *
FROM <schema>."my_table"
또는 기본 스키마를 변경할 수 있습니다.
SHOW search_path;
SET search_path TO my_schema;
테이블 스키마를 여기서 확인하십시오.
SELECT *
FROM information_schema.columns
예를 들어 테이블이 기본 스키마에 있는 경우public
둘 다 잘 될 것입니다.
SELECT * FROM parroquias_region
SELECT * FROM public.parroquias_region
그러나 섹터는 스키마를 지정해야 합니다.
SELECT * FROM map_update.sectores_point
시도할 수 있습니다.
SELECT *
FROM public."my_table"
내_테이블 근처에 있는 큰따옴표를 잊지 마세요.
저는 테이블 이름에 큰따옴표를 포함해야 했습니다.
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)
여기는 11번 우편물입니다.이 덤프의 CREATE TABLE 문에도 큰따옴표가 있습니다.
DROP TABLE IF EXISTS "COMMONDATA_NWCG_AGENCIES";
CREATE TABLE "COMMONDATA_NWCG_AGENCIES" (
...
이 오류가 발생하면 연결 문자열이 다른 데이터베이스를 가리키고 있는 것으로 드러났습니다. 분명히 테이블이 없습니다.
몇 시간 동안 이 작업을 했는데 아무도 연결 문자열을 다시 확인하라고 하지 않았습니다.
postgres dumped db에서 데이터를 복원한 후에도 동일한 문제가 발생했습니다.
내 덤프 파일은 아래 명령어를 가지고 있었습니다. 상황이 악화되기 시작한 곳부터요.
SELECT pg_catalog.set_config('search_path', '', false);
솔루션:
- 제거하거나 변경할 수 있습니다.
false
되려고true
. - 모든 테이블에 액세스하는 데 사용할 개인 스키마를 만듭니다.
위의 명령은 공개적으로 액세스할 수 있는 스키마를 모두 비활성화하기만 하면 됩니다.
설명서에 대한 자세한 내용은 여기에서 확인하십시오. https://www.postgresql.org/docs/9.3/ecpg-connect.html
이 오류는 액세스 제한으로 인해 발생할 수 있습니다.솔루션:
GRANT ALL PRIVILEGES ON DATABASE my_database TO my_user;
pgAdmin을 사용하여 테이블을 만들고 예약된 단어를 사용하지 않는 동안 생성된 테이블에는 이름에 따옴표가 있고 두 개의 열에 따옴표가 있습니다.다음은 생성된 SQL의 예입니다.
CREATE TABLE public."Test"
(
id serial NOT NULL,
data text NOT NULL,
updater character varying(50) NOT NULL,
"updateDt" time with time zone NOT NULL,
CONSTRAINT test_pk PRIMARY KEY (id)
)
TABLESPACE pg_default;
ALTER TABLE public."Test"
OWNER to svc_newnews_app;
이 모든 따옴표는 "임의"로 삽입되었습니다.인용문 없이 테이블을 삭제하고 다시 만들기만 하면 되었습니다.
pgAdmin 4.26에서 테스트됨
다음 사항을 확인하십시오.
- 암호가 비어 있지 않습니다.
- 비어 있는 경우 다음을 통과하지 마십시오.
password
연결 문자열의 매개 변수
튜토리얼을 시작할 때 가장 일반적인 오류 중 하나입니다.
제 경우, 제가 복원한 덤프 파일에는 다음과 같은 명령이 있었습니다.
CREATE SCHEMA employees;
SET search_path = employees, pg_catalog;
주석을 달았다가 다시 복원했습니다.문제가 해결되었습니다.
모든 테이블 이름은 소문자로 유지합니다. 롤백한 다음 최신 상태로 이동하면 소문자를 찾는 것 같습니다.
데이터베이스 이름을 다음과 같이 지정합니다.students
을 " " "로 지정합니다.studentinformation
이의 모든 ▁path▁we▁the▁then▁do▁in▁of▁which▁we합다▁table니▁to▁need▁the▁can▁schema▁to▁this▁set▁all▁use그설런정해에서 할 수 있는 경로를 설정해야 합니다.postgresql
예:
client.connect()
.then(()=>console.log("connected succesfully"))
.then(()=>client.query("set search_path to students"))
.then(()=>client.query("show search_path"))
.then(()=>client.query("set search_path to studentinformation"))
.then(()=>client.query("show search_path"))
.then(results => console.table(results.rows)) //setting the search path
저는 Postgre의 psql을 사용하고 있었습니다.SQL, 그리고 어떻게든 저는 먼저 데이터베이스에 연결하여 그곳에 테이블을 만드는 대신 "postgres=#" 디렉토리에 테이블을 만들었습니다.
표를 작성하기 전에 원하는 데이터베이스에 연결했는지 확인하십시오.
언급URL : https://stackoverflow.com/questions/36753568/postgresql-tables-exists-but-getting-relation-does-not-exist-when-querying
'programing' 카테고리의 다른 글
Xcode 10으로 업그레이드한 후 문제 발생: 빌드 입력 파일을 찾을 수 없습니다. (0) | 2023.05.03 |
---|---|
각 ID에 대한 Postgresql 추출 마지막 행 (0) | 2023.05.03 |
각각 외부 키인 요소의 PostgreSQL 배열 (0) | 2023.05.03 |
CSS를 통해 PNG 이미지의 색상을 변경하시겠습니까? (0) | 2023.05.03 |
Eclipse에서 철자 검사를 영구적으로 해제 (0) | 2023.05.03 |