Postgres - FATAL: डेटाबेस फाइलें सर्वर से असंगत हैं


185

अपने मैकबुक प्रो को पुनरारंभ करने के बाद मैं डेटाबेस सर्वर को शुरू करने में असमर्थ हूं:

could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/tmp/.s.PGSQL.5432"?

मैंने लॉग की जाँच की और निम्न पंक्ति बार-बार दिखाई देती है:

FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 9.2, which is not compatible with this version 9.0.4.

9.0.4 संस्करण था जो मैक पर प्रीइंस्टॉल्ड आया, 9.2 [.4] संस्करण है जिसे मैंने होमब्रे के माध्यम से स्थापित किया था। जैसा कि उल्लेख किया गया है, यह पुनरारंभ से पहले काम करता था, इसलिए यह वास्तव में एक संकलन मुद्दा नहीं हो सकता है। मैं भी फिर से भागा initdb /usr/local/var/postgres -E utf8और फ़ाइल अभी भी मौजूद है।

दुर्भाग्य से, मैं Postgres के लिए बहुत नया हूँ, इसलिए किसी भी मदद की बहुत सराहना की जाएगी।


1
आप पोस्टग्रेट्स कैसे शुरू करते हैं? क्या आप निश्चित रूप से नए संस्करण के लिए अपने शुरुआती बिंदु हैं? क्योंकि त्रुटि संदेशों के आधार पर मुझे लगता है कि दोनों संस्करण अब साथ-साथ स्थापित हैं।
fvu

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start- और प्रतिक्रिया हैserver starting
klaffenboeck

1
जब आप फ़ाइलों का नाम खोजते हैं, तो pg_ctl मुझे यकीन है कि आप 2 प्रतियां ढूंढने जा रहे हैं। और एक जो मेल खाता which pg_ctlहै वह पुराना संस्करण होगा, और दूसरा नया संस्करण होगा।
fvu

रनिंग pg_ctl --versionदेता हैpg_ctl (PostgreSQL) 9.2.4
klaffenboeck

2
@EvanCarroll ज़रूर तब किया था। मुझे लगता है कि अब उन्होंने इसे अंदर बंडल करने के लिए स्थानांतरित कर दिया है Server.appऔर इसे एक गैर-डिफ़ॉल्ट पोर्ट और यूनिक्स सॉकेट निर्देशिका का उपयोग करने के लिए छिपा दिया है। आखिरकार!
क्रेग रिंगर

जवाबों:


363

यदि आपने हाल ही में 10.x से 11 या 12 में अपग्रेड किया है, तो आप अपने डेटा को बनाए रखने वाली सभी डेटा निर्देशिकाओं को पोस्ट करने के लिए नीचे कमांड चला सकते हैं:

brew postgresql-upgrade-database

उपरोक्त कमांड के आउटपुट से लिया गया है brew info postgres


2
यह एक आकर्षण की तरह काम करता था, हालांकि, इसके काम करने के बाद, यह एक दूसरी त्रुटि पेश करता है, याद रखें कि initdb द्वारा बनाई गई db को brew postgresql-upgrade-databaseफिर से शुरू करने के लिए याद रखें, फिर से पोस्टग्रेज करें
शेमोगुम्बे

9.5 से 11 तक काम किया। कैसे उपयोग करने के लिए दिखाने के लिए यश brew info
याकूब y ’

2
10 से 11.5 तक। आप एक जीवन रक्षक है। <3
थॉमस

4
11 से 12 के लिए भी काम करता है।
स्टेवेक्स

1
9.5 से 12 तक काम करता है !!
ऑगस्टो समामे बैरिएन्टोस

169

यदि आप परमाणु विकल्प की तलाश कर रहे हैं (सभी डेटा हटाएं और एक नया डेटाबेस प्राप्त करें), आप कर सकते हैं:

rm -rf /usr/local/var/postgres && initdb /usr/local/var/postgres -E utf8

और फिर आप की आवश्यकता होगी rake db:setupऔर rake db:migrateअपने रेल app से सेटअप फिर से पाने के लिए।


3
यदि उपरोक्त अभी भी काम नहीं करता है (जो मेरे लिए मामला था), तो आईटीडीबी, जैसे / usr / स्थानीय / var / postgres95 में एक नया डेटा निर्देशिका नाम देने का प्रयास करें।
13

btw, इस के तुरंत बाद आप शायद createuser -s your_rails_appपटरियों 'postgres उपयोगकर्ता बनाने के लिए चलाने के लिए की आवश्यकता होगी । देखें stackoverflow.com/questions/11919391/…
Meekohi

38

यह कोशिश करें: https://gist.github.com/joho/3735740

इसने मेरे लिए पूरी तरह से काम किया। अंत में यह आपके DB को जांचने और पुराने क्लस्टर को हटाने के लिए आपको 2 बैश स्क्रिप्ट भी जनरेट करता है। वाकई शानदार।

देखें: http://www.postgresql.org/docs/9.2/static/pgupgrad.html अधिक समझने के लिए।


2
9.4 से 9.5 तक प्रवास के साथ मेरे लिए पूरी तरह से काम किया।
tftdias 11

9.3.4 से 9.5.2 तक प्रवास के साथ मेरे लिए भी काम किया।
स्टीव जोर्गेनसन

1
: यहाँ 9.6.1 के लिए अद्यतन करने के 9.5.5 के लिए चरणों का Homebrew (MacOS) का उपयोग कर रहे हैं gist.github.com/giannisp/b53a76047b07751ed3ade3c1db1d2c51
Giannis

यह निश्चित रूप से सबसे अच्छा जवाब होना चाहिए !! और कोई डेटा हानि नहीं।
फ्लोरियानबी

9

इंटरनेट पर मिला, यह समाधान मेरे लिए ठीक काम करता है।

जब मैंने OS X 10.10 Yosemite में अपग्रेड करने के बाद postgresql सर्वर शुरू करने की कोशिश की, तो मुझे एक अगली समस्या का सामना करना पड़ा:

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/pgsql_socket/.s.PGSQL.5432"?

ठीक है, सर्वर लॉग में एक नज़र डालते हैं:

cat /usr/local/var/postgres/server.log

FATAL: database files are incompatible with server
DETAIL: The data directory was initialized by PostgreSQL version 9.2, which is not compatible with this version 9.3.5.

इसलिए, हमें postgresql को अपग्रेड करने के बाद कुछ चरणों का पालन करने की आवश्यकता है:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

mv /usr/local/var/postgres /usr/local/var/postgres92

brew update

brew upgrade postgresql

initdb /usr/local/var/postgres -E utf8

pg_upgrade -b /usr/local/Cellar/postgresql/9.2.3/bin -B /usr/local/Cellar/postgresql/9.3.5_1/bin -d /usr/local/var/postgres92 -D /usr/local/var/postgres

cp /usr/local/Cellar/postgresql/9.3.5_1/homebrew.mxcl.postgresql.plist ~/Library/LaunchAgents/

pg_ctl -D /usr/local/var/postgres -l /usr/local/var/postgres/server.log start

rm -rf /usr/local/var/postgres92

बस।


1
मैंने उपरोक्त चरणों का उपयोग 9.53 से 10.0 में उन्नयन के लिए किया है। Pg_upgrad कमांड ने थोड़ा अपग्रेड किया है। नया कमांड pg_upgrad -b /usr/local/Cellar/postgresql/9.5.3/bin/B/usr/local/Cellar/postgresql/10.0-bin -d/ usr / local / postgres95 -D / usr / usr है। / स्थानीय / var / postgres
techvineet

नीचे बेहतर समाधान
Gady

8

यदि आप पोस्टग्रेज के पिछले संस्करण को रखना चाहते हैं, तो उपयोग करें brew switch:

$ brew info postgresql

postgresql: stable 10.5 (bottled), HEAD
Object-relational database system
https://www.postgresql.org/
Conflicts with:
  postgres-xc (because postgresql and postgres-xc install the same binaries.)
/usr/local/Cellar/postgresql/9.6.3 (3,259 files, 36.6MB)
  Poured from bottle on 2017-07-09 at 22:15:41
/usr/local/Cellar/postgresql/10.5 (1,705 files, 20.8MB) *
  Poured from bottle on 2018-11-04 at 15:13:13

$ brew switch postgresql 9.6.3
$ brew services stop postgresql
$ brew services start postgresql

अन्यथा, मौजूदा डेटा को माइग्रेट करने के लिए इस काढ़ा आदेश पर विचार करें brew postgresql-upgrade-database:। की जाँच करें स्रोत कोड


1

मेरे लिए यह तब हुआ जब मैं Postgres11 माउंटेड वॉल्यूम के साथ Postgres12 को शुरू करने की कोशिश कर रहा था। बस postgres11 के लिए घुड़सवार मात्रा को हटाने और पुनरारंभ मेरे लिए काम किया।

पहले मैं उपयोग कर रहा था:

docker run -d --name my_database -v /Users/champ/postgres:/var/lib/postgresql/data -p 54320:5432 postgres:11

मैंने उपयोग किया / हटाए गए उपयोगकर्ता / शैंपू / पोस्टग्रेज हटाए गए और पुनः आरंभ किए गए पोस्टग्रेज 12, का उपयोग करते हुए

docker run -d --name my_database -v /Users/champ/postgres:/var/lib/postgresql/data -p 54320:5432 postgres:12
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.