Supergrer के रूप में "createb" के साथ db नहीं बना रहा Postgresql, अभी तक त्रुटियों को आउटपुट नहीं कर रहा है [डुप्लिकेट]


100

मैं 'पोस्टग्रेज' सुपर उपयोगकर्ता के साथ एक ताजा पोस्टग्रैस्कॉल स्थापित कर रहा हूं। लॉग इन करें:

sudo -u postgres psql


postgres=# createdb database
postgres-# \list
                                  List of databases
   Name    |  Owner   | Encoding |  Collation  |    Ctype    |   Access privileges   
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | 
 template0 | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres
                                                             : postgres=CTc/postgres
 template1 | postgres | UTF8     | en_GB.UTF-8 | en_GB.UTF-8 | =c/postgres
                                                             : postgres=CTc/postgres

कोई त्रुटि नहीं, फिर भी तालिका नहीं बनाई जा रही है। कोई विचार?


जवाबों:


208

createdbएक कमांड लाइन उपयोगिता है जिसे आप बैश से चला सकते हैं और psql से नहीं। Psql से एक डेटाबेस बनाने के लिए , इस create databaseतरह के कथन का उपयोग करें:

create database [databasename];

नोट: हमेशा अपने एसक्यूएल बयानों को समाप्त करना सुनिश्चित करें ;


35
धन्यवाद, मैं अब खुद को थप्पड़ मारूंगा। :)
डेमियन रोशे

ज़रूर। आसान बिंदु;) अभी तक (जाहिरा तौर पर) 7 मिनट इंतजार करना होगा। एक बार फिर धन्यवाद।
डेमियन रोशे

35
अंत में अर्धविराम जोड़ना न भूलें ..;
टिमोथी डाल्टन

4
जीत के लिए कि अर्द्ध कॉलिन!
माइकल डिमिट

1
धन्यवाद! अर्ध अर्धविराम ने मेरे लिए काम किया। इतना छोटा अभी तक जीवन बदल रहा है;)
sas

75

पार्टी के लिए देर हो चुकी है, लेकिन स्वीकार किए जाते हैं उत्तर यह नहीं समझाता है कि कोई त्रुटि क्यों प्रदर्शित नहीं होती है। और यह कुछ ऐसा है कि नए लोग अक्सर पोस्टग्राउंड पर ठोकर खाते हैं, मैं इसे जोड़ना चाहता था।


TL / TR: हमेशा अपने SQL कथनों को समाप्त करें ;


क्योंकि createdb databaseअंत नहीं होता ; psqlसोचता है कि बयान अधिक निवेश के लिए समाप्त हो गया और इंतजार नहीं है। यह संकेत मिलता है कि शीघ्र से बदल रहा postgres=#है postgres-#। एक अत्यंत सूक्ष्म परिवर्तन जिसकी मैं कामना करता हूं psqlवह अलग (अधिक "प्रमुख") होगा।

मेटा-कमांड दर्ज करके \list"वर्तमान" एसक्यूएल स्टेटमेंट को निष्पादित किए बिना "निरस्त" किया जाता है।

यदि उत्पादन के createdbसाथ समाप्त हो गया ;होता तो उत्पादन होता:

postgres => createb foobar;
त्रुटि: "createb" पर या पास सिंटैक्स त्रुटि
लाइन 1: फोर्ब फोब्बर;
        ^
postgres =>

स्पष्ट रूप से दिखा रहा है कि कुछ गलत था।


3
वाह, यह वास्तव में सूक्ष्म लेकिन घातक है। मैं काफी समय से इस मुद्दे पर चल रहा था। पहली बार जब आप एक अर्धविराम के साथ कमांड चलाते हैं तो आपको त्रुटि मिलेगी क्योंकि createdbयह मान्य नहीं है। लेकिन फिर अर्धविराम के साथ-साथ पूरी तरह से काम create databaseकरने के createdbसाथ सटीक उसी कमांड को दोहराते हैं ।
ग्लेन सेले

1
@ हेलिंग: यही मैंने लिखा है, मैंने अभी बताया कि अमान्य होने के बावजूद कोई त्रुटि संदेश क्यों नहीं
आया

@a_horse_with_no_name हाँ, मुझे आपका उद्देश्य गलत लगा। अपने उत्तर को भी उत्कीर्ण किया।
हेलसिंग

3

मैं इस स्थिति में नहीं था बहुत पहले। यदि कोई अन्य व्यक्ति यह अनुभव करता है, तो यह देखते हुए कि कमांड प्रॉम्प्ट postgres-#आपको दिखाता है कि लंबित क्रैब कमांड को केवल टाइप करके ;और वापसी कुंजी निष्पादित कर सकते हैं ।



0

नोड टर्मिनल का उपयोग करते हुए, मुझे दौड़ना पड़ा:

psql -U postgres 

[अपना पासवर्ड डालें]

फिर ...

CREATE DATABASE dbadmin;

क्या भ्रामक है कि मैंने पहले इन कमांडों में प्रवेश किया और यह काम नहीं किया। केवल लॉग आउट करने और वापस लॉग इन करने के बाद, क्या मैं दस्तावेज़ से इस मानक आदेश का उपयोग करने में सक्षम था: https://www.postgresql.org/docs/10/tutorial-createdb.html

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