Postgres에서“오류 : c.relhasoids 열이 존재하지 않습니다”수정하는 방법?


33

PostgreSQL에서 CREATE TABLE 명령을 만들려고합니다 . 테이블을 만든 후 TABLE table name을 펀치 하면 작동합니다.

그러나 \ d table name을 펀치 하면 아래 오류가 계속 발생합니다.

ERROR: column c.relhasoids does not exist LINE 1: ...riggers, c.relrowsecurity, c.relforcerowsecurity, c.relhasoi...

DROP DATABASE 테이블 이름을 시도 하여 데이터베이스를 다시 작성하고 테이블을 여러 번 다시 작성했습니다. 그러나 작동하지 않았습니다.

모든 제안을 부탁드립니다! 감사합니다.


어떤 버전을 사용하고 있습니까?
richyen

해결되었습니다! 정말 고마워요! pg_hba.conf createdb Nao를 찾으십시오.
Nao

일한 간단한 해결책은 여기 - stackoverflow.com/a/58462270/984471
Manohar 레디 Poreddy

"테이블 테이블 이름을 입력하면 작동합니다."
Adelin

답변:


30

Postgres v.12 및 이전 클라이언트 (v.11 이하)를 사용하는 경우 오류를 재현 할 수 있습니다.

[root@def /]# psql -h 172.17.0.3
psql (11.5, server 12.0)
WARNING: psql major version 11, server major version 12.
         Some psql features might not work.
Type "help" for help.

postgres=# create table mytable (id int, name text);
CREATE TABLE
postgres=# table mytable;
 id | name 
----+------
(0 rows)

postgres=# \d mytable;
ERROR:  column c.relhasoids does not exist
LINE 1: ...riggers, c.relrowsecurity, c.relforcerowsecurity, c.relhasoi...
                                                             ^
postgres=# 

V. 12, 때문이다 테이블 OID를 더 이상 특별한 열로 취급되지 않는다 , 따라서 relhasoids열이 더 이상 필요합니다. psql이 오류가 발생하지 않도록 v. 12 바이너리를 사용하고 있는지 확인하십시오 .

반드시를 사용 psql하고 있지는 않을 수 있으므로 여기에 더 일반적인 대답은 호환되는 클라이언트를 사용하고 있는지 확인하는 것입니다.


정말 고맙습니다! v11.5를 사용하고 있습니다 ... postgress를 제거했다가 다시 설치하려고합니다.
Nao

이 대답으로 인해 필자의 경우 범인이되었습니다. PgAdmin을 여러 개 설치했으며 Windows 검색에서 오래된 것을 사용할 수있었습니다. 따라서 Postgres v12와 함께 이전 PgAdmin을 사용하고있었습니다.
funforums

17

Docker 컨테이너 로 Postgres 를 실행하는 모든 사람 :

호스트에서 psql 을 실행하는 대신 컨테이너 내부에서 실행하십시오.

docker exec -it postgres_container_name psql your_connection_string

포스트 그레스 의 해당-때문에 항상 업데이트 된 버전과 이미지는 항상 선박 psql의 호스트 시스템에 설치된 올바른 버전을 가지고 걱정할 필요가 없습니다.


정말 요점을 그리워합니다. 컨테이너에 독립적으로 액세스 할 수 있어야합니다.
Jon M

이 맥락에서 "컨테이너에 독립적으로 액세스하는"이 무엇을 의미하는지 또는 왜 회신의 명령이 어떻게 허용되지 않는지 잘 모르겠습니다.
joakim

컨테이너에 직접 액세스해야하는 것은 아니므로 항상 가능하지는 않습니다. 여기서 문제는 별도의 postgres 서비스가 필요한 것 같습니다. psql 클라이언트를 다운 그레이드하거나 서버를 업그레이드하는 것이 해결책입니다. 단순히 문제를 우회하고 함께 실행하는 것이 아닙니다. 다른 구조적 제약으로 인해 항상 가능한 것은 아닙니다.
Jon M

물론이야; Docker 를 솔루션으로 사용하는 것은 제안하지 않았습니다 . 그렇기 때문에“Postgres를 Docker 컨테이너로 실행하는 모든 사람을 위해”로 이끌었습니다.
joakim

"your_connection_string"의 예를 게시 할 수 있습니까?
Olle Härstedt

2

나는 오늘이 문제가 있었고, 이것으로 인해 작업을 계속할 수 없었습니다. 이상하게도 응용 프로그램 코드가 올바르게 작동합니다.

나중에이 문제는 DB에 연결하는 데 사용하는 OmniDb 클라이언트를 사용하는 경우에만 발생합니다.

postgres 설치와 함께 제공되는 기본 pgAdmin 4로 클라이언트를 전환했으며 더 이상 pgAdmin 4가 발생하지 않습니다. 링크 : https://www.pgadmin.org/download/pgadmin-4-windows/

pgAdmin 4를 사용하여 OmniDb 클라이언트가 이전 버전 일 수 있지만 문제를 해결할 시간이 없습니다.

희망이 도움이됩니다.


0

오늘도 같은 문제가있었습니다. 필자의 경우 버전 12를 삭제하고 버전 11을 설치하면 문제가 해결되었습니다. v12에는 다른 열과 함께 만들어야하는 기능이있는 것 같습니다.


당신은 아마 사용하고 psql포스트 그레스 (12)에 연결하기위한 포스트 그레스 (11) 설치에서 - 당신이 사용해야 psql포스트 그레스 12
a_horse_with_no_name

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.