जब मुझे BOTH PostgreSQL सर्वर स्थापित करने की आवश्यकता हो तो मैं pg_dump के साथ "सर्वर संस्करण बेमेल" कैसे हल करूं?


13

मैंने अपने कंप्यूटर में दो PostgreSQL सर्वर स्थापित किए हैं। एक 9.1 है और दूसरा 9.3 है। मुझे दोनों सर्वर स्थापित करने की आवश्यकता है

जब मैं pg_dump चलाता हूं, हालांकि, मुझे एक संस्करण बेमेल त्रुटि मिलती है:

server version: 9.3.6; pg_dump version: 9.1.15
pg_dump: aborting because of server version mismatch

मैं इसे कैसे सुलझाऊं? (या तो संस्करण को अनइंस्टॉल नहीं किया जा सकता है - मैंने 9.1 पहले और 9.3 कई महीनों बाद स्थापित किया - मुझे दोनों डेटाबेस सर्वर स्थापित करने की आवश्यकता है)।


स्पष्ट रूप से 9.3 संस्करण चलाएं pg_dump। दोनों स्थापित हैं, लेकिन केवल एक ही डिफ़ॉल्ट है। देखें update-alternativesपथ के लिए, या dpkg -Lकि वे कहाँ हैं PostgreSQL क्लाइंट पैकेज को देखने के लिए। अपने आप को दिखाने के लिए एक उबंटू बॉक्स तक तत्काल पहुंच न रखें।
क्रेग रिंगर

नही सकता। Pg_dump कमांड को किसी अन्य एप्लिकेशन से चलाया जा रहा है।
लुइस मासुअली

PATHऐप के साथ चलने वाले पर्यावरण चर को आपको तब बदलना होगा ।
क्रेग रिंगर

मुझे भी यही समस्या थी। मुझे PostgreSQL apt रिपॉजिटरी के माध्यम से स्थापित करना पड़ा: askubuntu.com/a/831293/448857
neoneye

जवाबों:


16

TL; DR : यदि दोनों PostgreSQL इंस्टेंसेस को उबंटू संकुल द्वारा प्रबंधित किया जाता है (जैसा कि उन्हें चाहिए), बस --clusterबैकअप के लिए PostgreSQL इंस्टेंस का चयन करने के लिए विकल्प का उपयोग करें, और यह स्वतः ही pg_dump के संबंधित संस्करण का चयन करेगा:

pg_dump --cluster 9.1/main [other pg_dump options]

या

pg_dump --cluster 9.3/main [other pg_dump options]

mainकेवल एक डिफ़ॉल्ट मान है, कॉलम pg_lsclustersमें अपने वास्तविक नाम देखने के लिए चलाएँ Cluster

यह कैसे काम करता है: जैसा कि उबंटू संकुल द्वारा स्थापित किया गया है, /usr/bin/pg_dumpवास्तव में एक सॉफ्ट-लिंक है /usr/share/postgresql-common/pg_wrapper, जिसका उद्देश्य सही उदाहरण का चयन करना और संबंधित बाइनरी को चलाना ठीक है। --clusterPostgreSQL कमांड में मौजूद नहीं है, यह एक Debian / Ubuntu जोड़ है जो इस एकाधिक संस्करणों / एकाधिक पथ समस्या को संबोधित करने के लिए है।

इस के लिए एक ही है psql, createdb, createuser, आदि के बारे में 18 postgres आदेशों में /usr/binवास्तव में द्वारा प्रबंधित किया जाता pg_wrapper

अधिक के लिए आदमी pg_wrapper देखें ।


संस्करण / मुख्य के लिए क्या है? क्या मुख्य है?
अलेक्जेंडर मिल्स

1
@ एलेक्सेंडरमिल्स: version= पोस्टग्रैस्कल का प्रमुख संस्करण और mainक्लस्टर का डिफ़ॉल्ट नाम। Pg_lsclusters और pg_wrapper के मैनपेज़ देखें।
डैनियल वेरिटे

7

आप उपयोग कर सकते हैं:

sudo find / -name pg_dump

pg_dumpमेरे मामले में अपने संस्करणों को खोजने के लिए :/usr/pgsql-9.6/bin/pg_dump

तो आगे हम कर सकते हैं:

sudo ln -sfn /usr/pgsql-9.6/bin/pg_dump /usr/bin/pg_dump

हमारी आवश्यकता के अनुसार अद्यतन करने के लिए

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