पोस्टग्रेज में "ERROR: कॉलम c.relhasoids मौजूद नहीं है" को कैसे ठीक करें?


33

मैं Postgresql में टेबल कमांड बनाने की कोशिश कर रहा हूं । टेबल बनाने के बाद, अगर मैं टेबल टेबल के नाम पर पंच करता हूं, तो यह काम करता है।

लेकिन मैं \ d तालिका के नाम पर मुक्का मारता हूं , मुझे नीचे एक त्रुटि मिलती रहती है।

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

मैंने DROP DATABASE तालिका का नाम एक डेटाबेस को फिर से बनाया और एक तालिका को कई बार फिर से बनाने का प्रयास किया । लेकिन यह काम नहीं किया।

किसी भी सुझाव की सराहना की जाएगी! धन्यवाद।


आप कौन सा संस्करण उपयोग कर रहे हैं?
रिचेन

इसे हल किया गया था! आप सभी का बहुत धन्यवाद! pg_hba.conf का पता लगाएं Nao तब यह काम किया।
नाओ

सरल समाधान जो यहां काम कर रहा है - stackoverflow.com/a/58462270/984471
मनोहर रेड्डी Poreddy

"अगर मैं टेबल टेबल के नाम पर मुक्का मारता हूं तो इसका क्या मतलब है। यह काम करता है।"
एडेलिन

जवाबों:


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कॉलम अब आवश्यक नहीं है। कृपया सुनिश्चित करें कि आप v। 12 psqlबाइनरी का उपयोग कर रहे हैं ताकि आप इस त्रुटि का सामना न करें।

आप जरूरी उपयोग नहीं कर सकते हैं psql, इसलिए यहां अधिक सामान्य उत्तर यह सुनिश्चित करने के लिए है कि आप संगत क्लाइंट का उपयोग कर रहे हैं।


आपको बहुत - बहुत धन्यवाद! मैं v11.5 का उपयोग कर रहा हूँ ... मैं पुनः स्थापना रद्द करने और पुन: स्थापित करने का प्रयास करूँगा।
नाओ

इस जवाब ने मुझे मेरे मामले में अपराधी के लिए प्रेरित किया: मेरे पास कई PgAdmin इंस्टॉलेशन हैं, और विंडोज सर्च केवल मुझे एक पुराने का उपयोग करने के लिए दे रहा था। इसलिए मैं एक पुराने PgAdmin का उपयोग Postgres v12 के साथ कर रहा था।
funforums

17

डॉकटर कंटेनर के रूप में पोस्टग्रेज चलाने वाले किसी के लिए :

होस्ट से साइकल चलाने के बजाय , इसे कंटेनर के अंदर से चलाएं जैसे

docker exec -it postgres_container_name psql your_connection_string

Postgres छवि हमेशा इसी-और इस तरह हमेशा के अद्यतन संस्करण के साथ जहाजों psql ताकि आप मेजबान मशीन पर स्थापित सही संस्करण होने के बारे में चिंता करने की ज़रूरत नहीं है।


कि वास्तव में बात याद आती है। आपको स्वतंत्र रूप से एक कंटेनर तक पहुंचने में सक्षम होने की आवश्यकता है।
जॉन एम

मुझे यकीन नहीं है कि इस संदर्भ में "स्वतंत्र रूप से एक कंटेनर तक पहुंच" का मतलब क्या है या मेरे जवाब में कमान किसी तरह की अनुमति क्यों नहीं दे रही है?
जोकिम

क्योंकि कंटेनर तक सीधे पहुंचना हमेशा संभव नहीं हो सकता है। यहाँ समस्या को एक अलग पोस्टग्रेज सेवा की आवश्यकता प्रतीत होती है। Psql क्लाइंट को अपग्रेड करना, या सर्वर को अपग्रेड करना समाधान है; बस समस्या को दरकिनार करके एक साथ नहीं चल रहा है। यह हमेशा अन्य वास्तु बाधाओं के कारण संभव नहीं है।
जॉन एम

बेशक; मैंने डॉकर को समाधान के रूप में उपयोग करने का सुझाव नहीं दिया । इसलिए मैंने “डॉकटर कंटेनर के रूप में पोस्टग्रेज चलाने वाले किसी के लिए” का नेतृत्व किया।
जोकिम

क्या आप कृपया "your_connection_string" का उदाहरण पोस्ट कर सकते हैं?
ओलेल हैर्स्टेड

2

मेरे पास आज यह मुद्दा था, इस वजह से काम जारी रखने में असमर्थ था, अजीब तरह से आवेदन कोड ठीक काम कर रहा है।

बाद में, पाया कि यह समस्या केवल तब होती है जब मैं ओमनीबब क्लाइंट का उपयोग करता हूं जिसे मैं डीबी से कनेक्ट करने के लिए उपयोग करता हूं।

मैंने क्लाइंट को डिफ़ॉल्ट pgAdmin 4 पर स्विच किया है जो पोस्टग्रेज इंस्टॉलेशन के साथ आता है और मुद्दा अब pgAdmin 4 नहीं हो रहा है। लिंक: https://www.pgadmin.org/download/pgadmin-4-windows/

यह संभव है कि OmniDb क्लाइंट पुराना हो, लेकिन अब इसके निवारण के लिए pgAdmin 4 का उपयोग करने का समय नहीं है।

उम्मीद है की वो मदद करदे।


0

आज भी मेरे पास यही मुद्दा था। मेरे मामले में, समस्या तब हल हो गई जब मैंने संस्करण 12 को हटा दिया और संस्करण 11 स्थापित किया। ऐसा लगता है कि v12 में कुछ विशेषताएं हैं जो दूसरों के कॉलम के साथ बनाई जानी चाहिए।


आप शायद psqlअपने पोस्टग्रेज 11 इंस्टॉलेशन से पोस्टग्रेज 12 से कनेक्ट करने के लिए उपयोग कर रहे थे - आपको psqlपोस्टग्रेज 12 के लिए इस्तेमाल करना चाहिए था
a_horse_with_no_name

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.