2012-11-10 36 views
45

मैं 'पोस्टग्रेस' सुपर उपयोगकर्ता के साथ एक नए पोस्टग्रेस्क्ल इंस्टॉल के साथ काम कर रहा हूं। के माध्यम से लॉग इन:पोस्टग्रेस्क्ल सुपरबियर के रूप में "बनाया गया" के साथ डीबी नहीं बना रहा है, फिर भी त्रुटियों को आउटपुट नहीं कर रहा है

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 

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

+0

निकटता से संबंधित http://stackoverflow.com/questions/8537576/what-is-wrong-with-this-postgresql-query –

उत्तर

97

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

create database [databasename]; 

नोट: हमेशा ;

+16

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

+0

क्या आप इस प्रश्न को उत्तर के रूप में चिह्नित कर सकते हैं :) –

+0

निश्चित रूप से। आसान अंक;) अभी तक 7 मिनट इंतजार करने की आवश्यकता है (स्पष्ट रूप से)। एक बार फिर धन्यवाद। –

39
पार्टी के लिए देर

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


टीएल/टी.आर.: हमेशा ;


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

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

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

postgres=> createdb foobar; 
ERROR: syntax error at or near "createdb" 
LINE 1: createdb foobar; 
     ^
postgres=>

जाहिर है दिखा रहा है कि कुछ गलत हो गया था।

+2

वाह, यह वास्तव में सूक्ष्म लेकिन घातक है। मुझे कुछ समय के लिए यह मुद्दा था। पहली बार जब आप अर्धविराम के साथ कमांड चलाते हैं तो आपको त्रुटि मिल जाएगी क्योंकि 'बनाया गया' मान्य नहीं है। लेकिन फिर अर्धविराम के साथ पूरी तरह से काम करता है, 'बनायाb' के बजाय' डेटाबेस बनाएं 'के साथ सटीक वही आदेश दोहराएं। –