postgresql स्थापना: initdb डेटा निर्देशिका खाली नहीं है?


17

मैं postgresql डेटाबेस बनाने की कोशिश कर रहा हूं।

जब मैं PostgreSQL स्थापित करता हूं, तो मैंने यह आदेश दिया है:

sudo yum install postgresql postgresql-server

और बाद में मैंने विन्यास फाइल को संशोधित किया:

sudo vim /var/lib/pgsql/data/pg_hba.conf

और के रूप में संशोधित

local   all         all                               trust
host    all         all         127.0.0.1/32          trust
host    all         all         ::1/128               trust
host    all         all         0.0.0.0/0             md5

जब मैं पोस्टग्रेजल सेवा को शुरू करने की कोशिश कर रहा हूं:

sudo service postgresql initdb

> Data directory is not empty!                               [FAILED]

sudo chkconfig postgresql on

sudo service postgresql start

Starting postgresql service:                               [  OK  ]

इन त्रुटियों के कारण क्या है और मैं उन्हें कैसे ठीक करूं?

जवाबों:


18

Initdb को केवल एक बार चलाया जाना चाहिए। यह निर्देशिका बनाएगा जहाँ आप कॉन्फिग फाइल्स रखेंगे और (आमतौर पर) वास्तविक डेटाबेस। आपने स्पष्ट रूप से पहले से ही ऐसा किया है; आपके द्वारा संपादित करने के लिए कोई भी pg_hba.conf नहीं होगा।

इसलिए, बस postgresql initdbफिर से न चलाएं , जब तक कि आप पूर्ण पुनर्स्थापना नहीं कर रहे हैं।


उत्तर के लिए धन्यवाद .. मैं इसे दो बार चलाता हूं ... इसका मतलब है कि इसकी स्थापना में समस्या नहीं है ..
श्रीधर

मेरा मतलब है कि आपकी स्थापना में कोई समस्या नहीं है, कम से कम ऐसा कोई भी नहीं जो आपने दिखाया है। केवल एक चीज जो विफल हो रही है वह एक से अधिक बार initdb कर रही है, और वह विफल होनी चाहिए - बाकी सब कुछ ठीक है। यदि कोई अन्य समस्या है, तो इसका वर्णन करने में मदद मिलेगी।
जेनी डी

बहुत-बहुत धन्यवाद .. फिर इसकी कोई समस्या नहीं है .. अगर मुझे कोई समस्या
आती है

15

से यहाँ :

यदि आप किसी पोस्टब्रिज DB को पूरी तरह से मिटा और पुनः स्थापित कर रहे हैं, तो initdbजैसे चल रहा है:

service postgresql-9.2 initdb -E 'UTF8' --pgdata="/foo/bar/"

आप इस सेवा त्रुटि का सामना कर सकते हैं:

डेटा निर्देशिका खाली नहीं है! [अनुत्तीर्ण होना]

इसे ठीक करने के लिए (और यह परमाणु विकल्प है - सभी डीबी डेटा मिटा दिया जाता है!)

अमेज़ॅन लिनक्स पर (2014-x):

rm -rf /var/lib/pgsql9/data

CentOS पर (6.x)

rm -rf /var/lib/pgsql/9.2/data

अब initdbफिर से कमांड का प्रयास करें और इसे इस बार काम करना चाहिए:

service postgresql-9.2 initdb


4

आरएचईएल / सेंटोस 7 और फेडोरा जैसी सिस्टम आधारित प्रणालियों पर आईटीडीबी चलाने की प्रक्रिया कुछ अलग है। यह अब init स्क्रिप्ट (जो अब मौजूद नहीं है) द्वारा किया जाता है, और नई प्रक्रिया अपस्ट्रीम निर्देशों के बहुत करीब है ।

आप पहली बार करना चाहिए suकरने के लिए postgresउपयोगकर्ता, और फिर से चलाने initdbया pg_ctl initdb। यदि आप Red Hat बिल्ड का उपयोग कर रहे हैं तो डेटा निर्देशिका प्रदान करना आवश्यक नहीं है क्योंकि इसका डिफ़ॉल्ट स्वचालित रूप से डिफ़ॉल्ट डेटा निर्देशिका का चयन करता है /var/lib/pgsql

उदाहरण के लिए:

# su - postgres
$ pg_ctl initdb
$ exit
#

बेशक, आप केवल शुरुआती डेटा निर्देशिका को सेट करने के लिए, पहली स्थापना पर केवल एक बार ऐसा करते हैं। आप इसे फिर से नहीं करेंगे जब तक कि आप एक पूरी तरह से नया इंस्टॉलेशन नहीं बना रहे थे या एक आपदा से बहाल नहीं कर रहे थे।


3

मैं एक ही मुद्दा था, CentOS 6 पर PostgreSQL 9.3 का उपयोग कर।

मैंने /var/lib/pgsql/9.3/data फ़ोल्डर को हटा दिया, फिर कमांड को फिर से चलाया

sudo service postgresql-9.3 initdb

... जिसने सफलतापूर्वक db सेवा को फिर से आरंभ किया।

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