Làm cách nào để khắc phục L ERI LRI: cột c.relhasoids không tồn tại trên thế giới trong Postgres?


33

Tôi đang cố gắng TẠO lệnh TABLE trong Postgresql. Sau khi tạo bảng, nếu tôi bấm vào tên bảng BẢNG , nó sẽ hoạt động.

Nhưng tôi đấm trong \ d tên bảng , tôi tiếp tục nhận được một lỗi dưới đây.

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

Tôi đã thử tên bảng DROP DATABASE tạo lại cơ sở dữ liệu và tạo lại bảng một lần nữa. Nhưng nó không hoạt động.

Mọi lơi đê nghị đêu nên được đanh gia cao! Cảm ơn bạn.


Phiên bản nào bạn đang sử dụng?
richyen

Nó đã được giải quyết! Cảm ơn mọi người rất nhiều! xác định vị trí pg_hba.conf createdb Nao Sau đó, nó hoạt động.
Nao

Giải pháp đơn giản đã có hiệu quả tại đây - stackoverflow.com/a/58462270/984471
Manohar Reddy Poreddy

Ý bạn là gì khi "nếu tôi bấm vào tên bảng BẢNG, nó hoạt động."
Adelin

Câu trả lời:


30

Tôi có thể tái tạo lỗi của bạn nếu tôi đang sử dụng Postgres v.12 và một máy khách cũ hơn (v.11 trở về trước):

[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=# 

Điều này là do trong câu 12, các OID của bảng không còn được coi là các cột đặc biệt và do đó relhasoidscột không còn cần thiết nữa. Vui lòng đảm bảo rằng bạn đang sử dụng psqlnhị phân câu 12 để không gặp phải lỗi này.

Bạn có thể không nhất thiết phải sử dụng psql, vì vậy câu trả lời chung hơn ở đây là đảm bảo bạn đang sử dụng máy khách tương thích.


Cảm ơn bạn rất nhiều! Tôi đang sử dụng v11.5 ... Tôi sẽ cố gắng gỡ cài đặt và cài đặt lại lần nữa.
Nao

Câu trả lời này đã đưa tôi đến thủ phạm trong trường hợp của tôi: Tôi có nhiều cài đặt PGAdmin và tìm kiếm Windows chỉ cho tôi một cái cũ để sử dụng. Do đó, tôi đã sử dụng một PGAdmin cũ với Postgres v12.
funforums

17

Đối với bất cứ ai chạy Postgres dưới dạng Docker container:

Thay vì chạy psql từ máy chủ, hãy chạy nó từ bên trong container, vd

docker exec -it postgres_container_name psql your_connection_string

Các Postgres hình ảnh luôn tàu với và tương ứng như vậy, luôn được cập nhật phiên bản của psql , do đó bạn không cần phải lo lắng về việc có đúng phiên bản cài đặt trên máy chủ.


Điều đó thực sự bỏ lỡ điểm. Bạn cần có khả năng truy cập một container độc lập.
Jon M

Tôi không chắc chắn những gì mà việc truy cập vào một container độc lập có nghĩa là trong bối cảnh này hoặc tại sao lệnh trong câu trả lời của tôi bằng cách nào đó không cho phép điều đó?
joakim

Bởi vì phải truy cập trực tiếp vào container có thể không phải lúc nào cũng có thể. Vấn đề ở đây dường như đòi hỏi một dịch vụ postgres riêng biệt. Hạ cấp máy khách psql hoặc nâng cấp máy chủ là giải pháp; không chỉ đơn giản là bỏ qua vấn đề và chạy nó cùng nhau. Điều đó không phải lúc nào cũng có thể do các hạn chế kiến ​​trúc khác.
Jon M

Tất nhiên; Tôi không đề xuất sử dụng Docker như một giải pháp . Đó là lý do tại sao tôi đã dẫn đầu với những người chạy Postgres với tư cách là một Docker container.
joakim

Bạn có thể vui lòng gửi một ví dụ về "your_connection_opes" không?
Olle Härstedt

2

Tôi đã có vấn đề này ngày hôm nay, không thể tiếp tục làm việc do điều này, kỳ lạ là mã ứng dụng đang hoạt động tốt.

Sau đó, phát hiện sự cố này chỉ xảy ra nếu tôi sử dụng ứng dụng khách OmniDb mà tôi sử dụng để kết nối với DB.

Tôi đã chuyển máy khách sang pgAdmin 4 mặc định đi kèm với cài đặt postgres & sự cố không xảy ra nữa pgAdmin 4. Liên kết: https://www.pgadmin.org/doad/pgadmin-4-windows/

Có thể ứng dụng khách OmniDb có thể cũ hơn nhưng không có thời gian để khắc phục sự cố, sử dụng pgAdmin 4 ngay bây giờ.

Mong rằng sẽ giúp.


0

Tôi đã có cùng một vấn đề ngày hôm nay quá. Trong trường hợp của tôi, vấn đề đã được giải quyết khi tôi xóa phiên bản 12 và cài đặt phiên bản 11. Có vẻ như v12 có một số tính năng phải được tạo dọc theo các cột khác.


Bạn có thể đã sử dụng psqltừ cài đặt Postgres 11 của mình để kết nối với Postgres 12 - bạn nên sử dụng psqlcho Postgres 12
a_horse_with_no_name

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.