Postgres'te “HATA: c.relhasoids sütunu yok” nasıl düzeltilir?


33

Postgresql TABLE komutunu oluşturmaya çalışıyorum . Bir tablo oluşturduktan sonra, TABLO tablo ismini delersem çalışır.

Ama \ d tablo adını yumruk, aşağıda bir hata alıyorum.

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

Ben teşebbüs DROP DATABASE tablo adı bir veritabanı yeniden ve yeniden birkaç kez bir tablo yeniden yarattı. Ama işe yaramadı.

Herhangi bir öneri mutluluk duyacağız! Teşekkür ederim.


Hangi sürümü kullanıyorsunuz?
richyen

Çözüldü! Herkese çok teşekkürler! pg_hba.conf oluşturulan b Nao bulun Sonra çalıştı.
Nao


Ne demek istiyorsun "TABLO tablo adını yumruklarsam işe yarar."
Adelin

Yanıtlar:


30

Postgres v.12 ve eski bir istemciyi (v.11 veya öncesi) kullanıyorsanız hatanızı yeniden oluşturabilirim:

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

Bunun nedeni, 12. sayfada , tablo OID'lerine artık özel sütunlar olarak davranılmaması ve dolayısıyla relhasoidssütunun artık gerekli olmamasıdır. psqlBu hatayla karşılaşmamak için lütfen v. 12 ikili dosyası kullandığınızdan emin olun .

Mutlaka kullanmıyor olabilirsiniz psql , bu yüzden burada daha genel bir cevap uyumlu bir istemci kullandığınızdan emin olmaktır.


Çok teşekkür ederim! V11.5 kullanıyorum ... postgress'i tekrar kaldırmayı ve yeniden yüklemeyi deneyeceğim.
Nao

Bu cevap benim durumumda suçluya yol açtı: Birden fazla PgAdmin kurulumum var ve Windows araması bana sadece eski bir tane kullanmamı sağlıyordu. Bu yüzden Postgres v12 ile eski bir PgAdmin kullanıyordum.
funforums

17

Postgres çalıştıran herkes için Docker konteyneri olarak :

Psql çalıştırmak yerineAna bilgisayardan , kabın içinden çalıştırın örn.

docker exec -it postgres_container_name psql your_connection_string

Postgres karşılık gelen-ve böylece her zaman güncel-sürümü ile görüntü hep gemiler psql'in ana makinede yüklü doğru sürümü olması hakkında endişe zorunda kalmamak.


Bu gerçekten noktayı kaçırıyor. Bir konteynere bağımsız olarak erişebilmeniz gerekir.
Jon M

Bu bağlamda “bir konteynere bağımsız olarak erişmenin” ne anlama geldiğinden veya cevabımdaki komutun neden bir şekilde buna izin vermediğinden emin değilim?
joakim

Çünkü konteynere doğrudan erişmek zorunda kalmak her zaman mümkün olmayabilir. Buradaki sorun ayrı bir postgres hizmeti gerektiriyor gibi görünüyor. Psql istemcisini düşürmek veya sunucuyu yükseltmek çözümdür; sadece sorunu atlamak ve birlikte çalıştırmak değil. Diğer mimari kısıtlamalar nedeniyle bu her zaman mümkün değildir.
Jon M

Elbette; Docker'ı çözüm olarak kullanmanızı önermedim . Bu yüzden “Postgres'i Docker konteyneri olarak çalıştıran herkes için” ile başladım.
joakim

"Your_connection_string" örneğini gönderebilir misiniz?
Olle Härstedt

2

Bugün bu sorunu yaşadım, bu nedenle çalışmaya devam edemedim, garip bir şekilde uygulama kodu iyi çalışıyor.

Daha sonra, bu sorunun yalnızca DB'ye bağlanmak için kullandığım OmniDb istemcisini kullandığımda oluştuğunu gördüm.

İstemciyi varsayılan olarak değiştirdim postgres kurulumuyla gelen pgAdmin 4 ve sorun artık oluşmuyor pgAdmin 4. Bağlantı: https://www.pgadmin.org/download/pgadmin-4-windows/

OmniDb istemcisinin daha eski olması mümkündür, ancak pgAdmin 4'ü şimdilik kullanarak sorun gidermek için zaman yoktur.

Umarım yardımcı olur.


0

Bugün de aynı sorunu yaşadım. Benim durumumda, sürüm 12'yi sildiğimde ve 11 sürümünü yüklediğimde sorun çözüldü. V12'nin diğer sütunlar boyunca oluşturulması gereken bazı özelliklere sahip olduğu anlaşılıyor.


Muhtemelen kullandığınız psqlPostgres 12 bağlanmak için Postgres 11 yüklemesinden - kullanmış olmalıdır psqlPostgres 12
a_horse_with_no_name

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.