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
나는 그것이 도움이되기를 바랍니다