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

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 테이블 이름을 시도 하여 데이터베이스를 다시 작성하고 테이블을 여러 번 다시 작성했습니다. 그러나 작동하지 않았습니다.

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



답변

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하고 있지는 않을 수 있으므로 여기에 더 일반적인 대답은 호환되는 클라이언트를 사용하고 있는지 확인하는 것입니다.


답변

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

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

docker exec -it postgres_container_name psql your_connection_string

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


답변

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

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

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

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

희망이 도움이됩니다.


답변

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


답변

나는 같은 문제가 있었다. 하지만이 링크를 따라 14/10/2019에 최신 빌드를 다운로드하여 해결책을 발견
https://postbird.paxa.kuber.host/2019_10_14.06_42-master-7a9e949

나는 그것이 도움이되기를 바랍니다