2014-08-30 4 views
5

मैं PostgreSql.I'm मेरी system.My ऑपरेटिंग सिस्टम में PostgreSQL स्थापित करने का प्रयास करने के लिए नए हूँ उबंटू है, नीचे तैनात मेरी त्रुटि हैinitdb: आरंभ pg_authid ... घातक: सूचकांक की गलत संख्या भाव

डेटाबेस क्लस्टर को locale en_US.UTF-8 के साथ प्रारंभ किया जाएगा। डिफ़ॉल्ट डेटाबेस एन्कोडिंग तदनुसार यूटीएफ 8 पर सेट किया गया है।

creating directory p01/pgsql/data ... ok 
creating subdirectories ... ok 
selecting default max_connections ... 100 
selecting default shared_buffers/max_fsm_pages ... 24MB/153600 
creating configuration files ... ok 
creating template1 database in p01/pgsql/data/base/1 ... ok 
initializing pg_authid ... FATAL: wrong number of index expressions 
STATEMENT: CREATE TRIGGER pg_sync_pg_database AFTER INSERT OR UPDATE OR DELETE ON 

pg_database FOR EACH STATEMENT EXECUTE PROCEDURE flatfile_update_trigger(); 

child process exited with exit code 1 
initdb: removing data directory "p01/pgsql/data" 

मेरी मदद करें !! धन्यवाद!

+1

यह pg_sync_pg_database और flatfile_update_trigger सामान क्या है? आप किस पैकेज का अधिष्ठापन स्थापित कर रहे हैं और क्या उनके साथ कुछ और है? –

+1

मुझे लगता है कि आपकी समस्या का समाधान [यहां] (http://www.postgresql.org/message-id/[email protected])। – Rhim

+0

यहां डेटा की एक कमजोर कमी है। PostgreSQL संस्करण? आपने इसे कैसे इंस्टॉल किया - पैकेज/स्रोत, कहां से? सटीक उबंटू संस्करण? * पोस्ट करने से पहले आपने क्या प्रयास किया *? (यह देखते हुए कि त्रुटि संदेश के लिए लिंक रिम पोस्ट ** दूसरा Google हिट ** है)? उस ने कहा, वास्तव में सटीक त्रुटि संदेश के साथ प्रासंगिक लॉग आउटपुट पोस्ट करने और इसे पढ़ने के लिए भी प्रारूपित करने के लिए धन्यवाद। –

उत्तर

3

@Rhim सही प्रतीत होता है - you've hit what was assumed to be a compiler bug। आप नवीनतम जीसीसी पैकेजों को make clean पर अपडेट करना चाहेंगे, configure को CFLAGS="-O1" के साथ तर्क के रूप में फिर से चलाएं, और फिर पुन: संकलित करें।

बीटीडब्ल्यू, यह सुझाव देता है कि आप PostgreSQL 8.4 या पुराने को pg_sync_pg_database के रूप में संकलित कर रहे हैं 9.0 या नए में दिखाई नहीं देते हैं। आपको एक नए मेजबान पर भी संकलन करना होगा। PostgreSQL 8.4 जल्द ही जीवन के अंत और असमर्थित होगा, यह संभवतः एक अच्छा विचार नहीं है।

यह भी सुझाव देता है कि आपने पैकेज का उपयोग करने के बजाय अपना खुद का संस्करण संकलित किया है। जब तक आपके पास कोई विशिष्ट विशिष्ट कारण न हो, आपको अपने स्वयं के संकलन के बजाय http://apt.postgresql.org/ का उपयोग करना चाहिए।

3

मैं centos centos 7 के लिए PostgreSQL (8.2) के 5 संस्करण के निर्माण, जबकि एक ही समस्या में पड़ गए (3.10.0-229.el7.x86_64।)

मैं इसके साथ काम करने के लिए सक्षम नहीं था gcc-4.8.3 CFLAGS = "- O1" चाल का उपयोग करते हुए, लेकिन कंपाइलर (सीसी = क्लैंग) के रूप में क्लैंग (3.4.2) पर स्विच करना मेरे लिए काम करता था (और यह डिफ़ॉल्ट-ओ 2 अनुकूलन स्तर पर काम करता था।)

4

जीसीसी 4.9.3 के साथ postgresql 8.1.4 संकलित करने के बाद मैं एक ही समस्या में भाग गया।

समस्या रास्ता postgres हो रहा है चर लंबाई सरणियों प्रतिनिधित्व करने के लिए उपयोग करता है:

typedef struct 
{ 
    int32  size;   /* these fields must match ArrayType! */ 
    int   ndim; 
    int   flags; 
    Oid   elemtype; 
    int   dim1; 
    int   lbound1; 
    int2  values[1];  /* VARIABLE LENGTH ARRAY */ 
} int2vector;     /* VARIABLE LENGTH STRUCT */ 

कुछ मामलों में, 'मान' तक पहुँचने छोरों के लिए, जीसीसी मान लिया गया है कि वे ज्यादा से ज्यादा एक यात्रा कर सकते हैं।

ii->ii_NumIndexAttrs = numKeys; 
if (numKeys) 
    ii->ii_KeyAttrNumbers[0] = indexStruct->indkey.values[0]; 

के रूप में कोडांतरक इसके लिए उत्पन्न को देखकर निष्कर्ष निकाला:

ii->ii_NumIndexAttrs = numKeys; 
for (i = 0; i < numKeys; i++) 
    ii->ii_KeyAttrNumbers[i] = indexStruct->indkey.values[i]; 

खत्म हो सकता है की तरह कुछ करने के लिए कम किया जा रहा है: एक नीचे (postgres के स्रोत कोड से निकाली गई) की तरह लूप्स

.L161: 
    testl %r12d, %r12d 
    movl %r12d, 4(%rbx) 
    jle .L162 
    movzwl 40(%r13), %eax 
    movw %ax, 8(%rbx) 
.L162: 

समस्या-मुक्त-आक्रामक-लूप-अनुकूलन का उपयोग कर अक्षमता के साथ पोस्टग्रेज़ को फिर से संकलित करने के बाद समस्या दूर हो गई।

+0

पोस्टग्रेज़ के नए संस्करण मानों का उपयोग करते हैं [], यदि संकलक द्वारा समर्थित मानों के बजाय [1]। –

संबंधित मुद्दे