2012-09-25 11 views
12

में अतिरिक्त मॉड्यूल घन स्थापित करने में समस्या मैं सातवें सप्ताह में "सात डेटाबेस" पुस्तक के साथ PostgreSQL का उपयोग करने का प्रयास कर रहा हूं। मैं एक उबंटू 10.04 सर्वर पर PostgreSQL 8.4.1 का उपयोग कर रहा हूं।PostgreSQL 8.4

पहला कार्य "पुस्तक" नामक डेटाबेस बनाना और जांचना है कि contrib संकुल ठीक से स्थापित किए गए हैं या नहीं।

$ createdb book 
$ psql book -c "SELECT '1'::cube;" 

जब मैं कि मैं निम्नलिखित उत्पादन मिलता है:

ERROR: type "cube" does not exist 
LINE 1: SELECT '1'::cube; 

मैं पहले से ही निम्न आदेश के साथ घन पैकेज स्थापित:

$ sudo -u postgres psql postgres < /usr/share/postgresql/8.4/contrib/cube.sql 

मैं PostgreSQL को पुन: प्रारंभ करने की कोशिश की, लेकिन समस्या बनी रहती है ।

SET 
CREATE FUNCTION 
CREATE FUNCTION 
CREATE FUNCTION 
CREATE FUNCTION 
ERROR: type "cube" already exists 
COMMENT 
CREATE FUNCTION 
COMMENT 
CREATE FUNCTION 
COMMENT 
CREATE FUNCTION 
COMMENT 
CREATE FUNCTION 
COMMENT 
CREATE FUNCTION 
COMMENT 
CREATE FUNCTION 
COMMENT 
CREATE FUNCTION 
COMMENT 
CREATE FUNCTION 
COMMENT 
CREATE FUNCTION 
COMMENT 
CREATE FUNCTION 
COMMENT 
CREATE FUNCTION 
CREATE FUNCTION 
CREATE FUNCTION 
CREATE FUNCTION 
CREATE FUNCTION 
CREATE FUNCTION 
CREATE FUNCTION 
CREATE FUNCTION 
CREATE FUNCTION 
CREATE FUNCTION 
CREATE FUNCTION 
CREATE FUNCTION 
CREATE FUNCTION 
CREATE FUNCTION 
ERROR: operator < already exists 
ERROR: operator > already exists 
ERROR: operator <= already exists 
ERROR: operator >= already exists 
ERROR: operator && already exists 
ERROR: operator = already exists 
ERROR: operator <> already exists 
ERROR: operator @> already exists 
ERROR: operator <@ already exists 
ERROR: operator @ already exists 
ERROR: operator ~ already exists 
CREATE FUNCTION 
CREATE FUNCTION 
CREATE FUNCTION 
CREATE FUNCTION 
CREATE FUNCTION 
CREATE FUNCTION 
CREATE FUNCTION 
ERROR: operator class "cube_ops" for access method "btree" already exists 
ERROR: operator class "gist_cube_ops" for access method "gist" already exists 

तो, क्या मैं गलत कर रहा हूँ: जब मैं चलाने का भी प्रयास पैकेज दूसरी बार मैं निम्नलिखित संदेश मिला है, जो स्पष्ट रूप से कहा गया है कि type "cube" already exists आयात?

उत्तर

11

आपने केवल अपने postgres डेटाबेस ("पोस्टग्रेस" नामक डिफ़ॉल्ट सिस्टम डेटाबेस) में एक्सटेंशन इंस्टॉल किया है - जो शायद नहीं है जो आप चाहते हैं। आपको एक्सटेंशन को पर अपने डेटाबेस में स्थापित करने की आवश्यकता है - एक बार डेटाबेस में इसका उपयोग करने के लिए।

या आप एक टेम्पलेट डेटाबेस के लिए स्थापित कर सकते हैं (template1 डिफ़ॉल्ट रूप से, लेकिन किसी भी डेटाबेस टेम्पलेट के रूप में इस्तेमाल किया जा सकता) ताकि बनाई हर नए डेटाबेस से शुरू होती है साथ कार्यक्षमता पूर्व स्थापित।

PostgreSQL 8.4 में या उससे अधिक है, तो आप खोल में चलाने की आवश्यकता:

psql -d dbname -f SHAREDIR/contrib/cube.sql

कहाँ dbname अपने वास्तविक लक्ष्य डाटाबेस का नाम है। या आपके प्रश्न में समतुल्य रेखा का उपयोग करें।
More info for PostgreSQL 8.4 in the manual here.

PostgreSQL 9.1 के बाद से इस आगे सरलीकृत किया गया है और तुम सिर्फ एक डेटाबेस सत्र में चला सकते हैं:

CREATE extension cube 

More in the manual here

+0

धन्यवाद! उसने ऐसा किया मैंने पोस्टग्रेएसक्यूएल 9.1 के लिए अन्य मशीन पर उबंटू 12.04 चलाने की विधि भी कोशिश की। –

6

पूर्ण आदेश 9.1 के लिए है:

psql -d dbname 
    CREATE EXTENSION cube; 
    \q 

कहाँ dbname डेटाबेस आप के लिए एक्सटेंशन जोड़ना चाहते हैं का नाम है। ध्यान दें कि अंतिम आदेश छोड़ने के लिए बैकलाश क्यू है। और दूसरे के अंत में अर्धविराम मत भूलना।