PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL पर सिद्धांत कॉलम आईडी मौजूद नहीं है

user एक आरक्षित शब्द है . यह current_user . के लिए एक उपनाम है ।

regress=> SELECT * FROM user;
 current_user 
--------------
 myusername
(1 row)

यदि आप user . का उपयोग करना चाहते हैं तालिका नाम के रूप में, चूंकि यह एक आरक्षित शब्द है, इसलिए आपको पहचानकर्ता को उद्धृत करना होगा , उदा.:

SELECT id FROM "user";

आपका ओआरएम सभी पहचानकर्ताओं, या कम से कम आरक्षित शब्दों को उद्धृत करना चाहिए। ऐसा करने में विफलता आपके ओआरएम में एक बग है। आप तालिका नाम के रूप में एक गैर-आरक्षित शब्द का उपयोग करके ओआरएम बग के आसपास काम कर सकते हैं।

मुझे लगता है कि यह psql . में थोड़ा सा मस्सा है कि यह स्वचालित रूप से उन पहचानकर्ताओं को उद्धृत करता है जिन्हें आप बैकस्लैश कमांड में पास करते हैं। तो \d user काम करेगा लेकिन select * from user नहीं होगा। आपको \d "user" write लिखना होगा . केस संवेदनशीलता के साथ भी यही समस्या उत्पन्न होती है जहां \d MyTable काम करता है लेकिन SELECT * FROM MyTable काम नहीं करेगा, आपको लिखना होगा SELECT * FROM "MyTable"

एक HINT देना अच्छा रहेगा त्रुटि में इसके बारे में संदेश। दुर्भाग्य से पार्सर और योजनाकार के पास वास्तव में उस समय पर्याप्त जानकारी नहीं होती है जब "कॉलम मौजूद नहीं है" त्रुटि यह जानने के लिए उत्पन्न होती है कि आपने मूल रूप से एक कीवर्ड लिखा था, यह केवल उस बिंदु पर एक फ़ंक्शन स्कैन देखता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रेल का दायरा महीने के भीतर बनाया गया

  2. PostgreSQL क्वेरी सीमा 1 के साथ बहुत धीमी है

  3. Psycopg2 इंसर्ट सहेजा नहीं गया

  4. विषम डेटा प्रकारों के साथ 3 फ़ील्ड पर बहु-स्तंभ अनुक्रमणिका

  5. यूपीएसईआरटी परीक्षण कोड में सिंटेक्स त्रुटि