postgresql - psql: FATAL: डेटाबेस "<user>" मौजूद नहीं है




(12)

मैं मैक ( http://postgresapp.com/ ) के लिए PostgreSql ऐप का उपयोग कर रहा हूं। मैंने इसे अतीत में अन्य मशीनों पर इस्तेमाल किया है, लेकिन यह मेरी मैकबुक पर स्थापित करते समय मुझे कुछ परेशानी दे रहा है। मैंने एप्लिकेशन इंस्टॉल किया है और मैं भाग गया:

psql -h localhost

यह लौटाता है:

psql: FATAL:  database "<user>" does not exist

ऐसा लगता है कि मैं डेटाबेस बनाने के लिए कंसोल भी नहीं चला सकता जिसे वह ढूंढने का प्रयास कर रहा है। वही बात होती है जब मैं बस चलाता हूं:

psql 

या यदि मैं एप्लिकेशन ड्रॉप डाउन मेनू से psql लॉन्च करता हूं:

मशीन आँकड़े:

  • ओएसएक्स 10.8.4

  • psql (PostgreSQL) 9.2.4

किसी भी मदद की सराहना की है।

मैंने होमब्रे के माध्यम से पोस्टग्रेएसक्ल को स्थापित करने का भी प्रयास किया है और मुझे एक ही समस्या मिल रही है। मैंने एप्लिकेशन प्रलेखन पृष्ठ भी पढ़ा है जो कहता है:

जब Postgres.app पहले शुरू होता है, तो यह $ USER डेटाबेस बनाता है, जो कि कोई भी निर्दिष्ट नहीं होने पर psql के लिए डिफ़ॉल्ट डेटाबेस है। डिफ़ॉल्ट उपयोगकर्ता $ USER है, बिना पासवर्ड के।

तो ऐसा लगता है कि एप्लिकेशन $ USER नहीं बना रहा है, हालांकि मैंने इंस्टॉल किया है-> अनइंस्टॉल किया गया है- कई बार पुनर्स्थापित किया गया है, इसलिए यह मेरी मशीन के साथ कुछ होना चाहिए।

मुझे जवाब मिला लेकिन मुझे यकीन नहीं है कि यह इस थ्रेड पर उत्तर देने वाले उपयोगकर्ता के रूप में कैसे काम करता है -> मैक में पोस्टग्रेस्क्ल चल रहा है: डेटाबेस "पोस्टग्रेस" मौजूद नहीं है । मैंने psql को खोलने के लिए निम्न आदेश का उपयोग किया:

psql -d template1

मैं इसे एक अनुत्तरित छोड़ दूंगा जब तक कोई यह काम न करे कि यह क्यों काम करता है।


  1. डिफ़ॉल्ट उपयोगकर्ता के रूप में लॉगिन करें: sudo -i -u postgres
  2. नया उपयोगकर्ता बनाएं: createuser --interactive
  3. रोल नाम के लिए संकेत मिलने पर, लिनक्स उपयोगकर्ता नाम दर्ज करें, और सुपरसियर प्रश्न के लिए हाँ का चयन करें।
  4. पोस्टग्रेस उपयोगकर्ता के रूप में अभी भी लॉग इन है, डेटाबेस बनाएं: बनाया createdb <username_from_step_3>
  5. पुष्टि करें कि त्रुटि दर्ज की गई है: psql कमांड प्रॉम्प्ट पर।
  6. आउटपुट को psql (xxx) Type "help" for help. करना चाहिए psql (xxx) Type "help" for help.

इसकी सबसे सरल व्याख्या में; यह नोब मुद्दा है। बस टाइपिंग

pgres

इस प्रतिक्रिया में परिणाम होगा।

pgres <db_name> 

अगर उपयोगकर्ता को डीबी तक पहुंचने की अनुमति है तो त्रुटि के बिना सफल होगा।

कोई भी निर्यात किए गए पर्यावरण चर के विवरण में जा सकता है लेकिन यह अनावश्यक है .. किसी भी अन्य कारण से असफल होने के लिए यह बहुत बुनियादी है।


ऐसा प्रतीत होता है कि आपका पैकेज प्रबंधक आपके लिए $ उपयोगकर्ता नामक डेटाबेस बनाने में विफल रहा है। इसका कारण है

psql -d template1

आपके लिए काम करता है कि टेम्पलेट 1 डेटाबेस द्वारा बनाई गई डेटाबेस है, और सभी इंस्टॉलेशन पर मौजूद है। आप स्पष्ट रूप से टेम्पलेट 1 में लॉग इन करने में सक्षम हैं, इसलिए आपके पास डेटाबेस द्वारा आपको कुछ अधिकार सौंपे गए हैं। शेल प्रॉम्प्ट पर इसे आज़माएं:

createdb

और फिर देखें कि क्या आप फिर से लॉग इन कर सकते हैं

psql -h localhost

यह आपके लॉगिन उपयोगकर्ता के लिए बस एक डेटाबेस तैयार करेगा, जो मुझे लगता है कि आप जो खोज रहे हैं। यदि बनाया गया विफल रहता है, तो आपके पास अपना डेटाबेस बनाने के लिए पर्याप्त अधिकार नहीं हैं, और आपको यह पता लगाना होगा कि होमब्रू पैकेज को कैसे ठीक किया जाए।


चूंकि यह प्रश्न खोज परिणामों में पहला है, इसलिए मैं एक अलग समस्या के लिए एक अलग समाधान डालूंगा, वैसे भी, डुप्लिकेट शीर्षक न होने के लिए।

एक डेटाबेस निर्दिष्ट किए बिना psql में एक क्वेरी फ़ाइल चलाते समय एक ही त्रुटि संदेश आ सकता है। चूंकि postgresql में कोई use कथन नहीं है, इसलिए हमें कमांड लाइन पर डेटाबेस निर्दिष्ट करना होगा, उदाहरण के लिए:

psql -d db_name -f query_file.sql

जैसा कि बनाया गया दस्तावेज बताता है:

पहला डेटाबेस हमेशा initdb कमांड द्वारा बनाया जाता है जब डेटा संग्रहण क्षेत्र प्रारंभ होता है ... इस डेटाबेस को पोस्टग्रेस कहा जाता है।

तो यदि कुछ ओएस / postgresql वितरण अलग-अलग करते हैं, तो यह निश्चित रूप से डिफ़ॉल्ट / मानक नहीं है (केवल सत्यापित है कि openSUSE 13.1 पर initdb डीबी "पोस्टग्रेस" बनाता है, लेकिन "<user>" नहीं)। लंबी कहानी छोटी, psql -d postgres का उपयोग "पोस्टग्रेस" के अलावा किसी अन्य उपयोगकर्ता का उपयोग करते समय किया जाने की उम्मीद है।

जाहिर है स्वीकार्य उत्तर, उपयोगकर्ता नाम की तरह डीबी बनाने के लिए बनाया गया है, साथ ही साथ काम करता है, लेकिन एक अनिवार्य डीबी बनाता है।


टर्मिनल से, बस अपने कमांड प्रॉम्प्ट विंडो पर कमांड चलाएं। (Psql के अंदर नहीं)

createdb <user>

और फिर पोस्टग्रेज़ को फिर से चलाने का प्रयास करें।


डिफ़ॉल्ट रूप से, पोस्टग्रेज़ आपके उपयोगकर्ता के समान नाम वाले डेटाबेस से कनेक्ट करने का प्रयास करता है। इस डिफ़ॉल्ट व्यवहार को रोकने के लिए, बस उपयोगकर्ता और डेटाबेस निर्दिष्ट करें:

psql -U Username DatabaseName 

मैंने इन समाधानों में से कुछ की कोशिश की, लेकिन उन्होंने काफी काम नहीं किया (हालांकि वे सही रास्ते पर बहुत अधिक थे!)

अंत में मेरी त्रुटि थी:

FATAL: उपयोगकर्ता के लिए पासवर्ड प्रमाणीकरण विफल रहा

जब मैंने निम्न आदेश चलाया: psql

तो फिर मैंने इन दो आदेशों को चलाया:

dropdb()
createdb()

नोट: यह डीबी को हटा देगा , लेकिन मुझे इसकी आवश्यकता नहीं थी और किसी कारण से मैं अब pqsl तक नहीं पहुंच सका, इसलिए मैंने इसे हटा दिया और फिर से बनाया। फिर psql फिर से काम किया।


यदि आपको Capistrano के साथ एक रेल परियोजना को तैनात करते समय यह त्रुटि मिल रही है तो आप अपने रिमोट सर्वर पर डेटाबेस बनाना चाहते हैं।

अपने उबंटू में लॉग इन करें और चलाएं:

sudo -u postgres psql

संकेत दिए जाने पर अपना पोस्टग्रेस उपयोगकर्ता पासवर्ड दर्ज करें। अब प्रवेश करके अपना डेटाबेस बनाएं:

CREATE DATABASE dbname_production;

नाम को आपके उत्पादन सर्वर पर shared/config/database.yml में निर्दिष्ट किया जाना चाहिए।

\q दर्ज करके बाहर निकलें


यह त्रुटि तब भी हो सकती है जब पर्यावरण परिवर्तनीय PGDATABASE डेटाबेस के नाम पर सेट हो जो मौजूद नहीं है।

ओएसएक्स पर, मैंने postgress.app मेनू से psql लॉन्च करने का प्रयास करते समय निम्न त्रुटि देखी:

psql: FATAL: database "otherdb" does not exist

त्रुटि का समाधान export PGDATABASE=otherdb को ~/.bash_profile export PGDATABASE=otherdb से निकालना था:

इसके अलावा, यदि PGUSER आपके उपयोगकर्ता नाम के अलावा किसी अन्य चीज़ पर सेट है, तो निम्न त्रुटि उत्पन्न होगी:

psql: FATAL: role "note" does not exist

समाधान ~/.bash_profile export PGUSER=notme से export PGUSER=notme को निकालना है।


होमब्री के माध्यम से postgresql स्थापित करते समय यह समस्या थी।

डिफ़ॉल्ट "पोस्टग्रेस" सुपर उपयोगकर्ता को इसके साथ बनाना था:

createuser --interactive postgres उत्तर उपयोगकर्ता के लिए y जवाब

सुपर उपयोगकर्ता के लिए createuser - इंटरैक्टिव उपयोगकर्ता उत्तर वाई


होमब्रे का उपयोग करके पोस्टग्रेस्क्ल स्थापित करने के बाद भी मुझे उपरोक्त समस्या थी - मैंने इसे / usr / bin / पहले / binr / binr / binr से पहले अपने पथ में डालकर हल किया





psql