मैं पोस्टग्रेजल डेटाबेस को कैसे अपग्रेड करूं? असंगति त्रुटि


26

मैंने होमब्रे के माध्यम से पोस्टग्रैस्कल स्थापित किया।

उन्नयन के बाद मेरे पास निम्नलिखित समस्या है:

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

कैसे उन्नत करने के लिए कोई सुझाव? मैंने निम्नलिखित कोशिश की:

$ pg_upgrade -d /usr/local/var/postgres/ -D /usr/local/var/postgres -b 
/usr/local/Cellar/postgresql/9.0.4/bin -B /usr/local/Cellar/postgresql/9.1.2/bin

यह काम नहीं किया। यहाँ आउटपुट है।

Performing Consistency Checks
Checking current, bin, and data directories                 ok
Checking cluster versions                                   
This utility can only upgrade to PostgreSQL version 9.1.
Failure, exiting

त्रुटि।

जवाबों:


36

Homebrew के साथ OS X पर मेरे लिए यह इस तरह था।

  1. Homebrew के साथ नए पोस्टग्रैज स्थापित किए (त्रुटि प्राप्त करना शुरू किया)
  2. mv /usr/local/var/postgres /usr/local/var/postgres.old
  3. initdb -D /usr/local/var/postgres
  4. pg_upgrade -b /usr/local/Cellar/postgresql/9.0.4/bin -B /usr/local/Cellar/postgresql/9.1.2/bin -d /usr/local/var/postgres.old -D /usr/local/var/postgres
  5. ./delete_old_cluster.sh (यह स्क्रिप्ट आपके लिए स्वचालित रूप से वर्तमान dir में बनाई गई है जब आप उपरोक्त चरणों से गुजरते हैं)
  6. rm delete_old_cluster.sh

शानदार और बस मुझे क्या चाहिए दोस्त! धन्यवाद। हिम तेंदुए से आने वाले एक शेर के उन्नयन के बाद। Server.log Google लोगों की जाँच करें !!
पैजामेर

यह मेरे लिए पूरी तरह से काम किया, धन्यवाद! ध्यान दें कि इन चरणों को करने से पहले पोस्टग्रैज नहीं चलना चाहिए, इसलिए यदि आपने होमब्रे के माध्यम से इसे स्थापित किया है, तो लॉन्च एजेंट को अनलोड करना सुनिश्चित करें जो इसे स्वचालित रूप से शुरू करता है launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist:। उपरोक्त सभी चरणों को पूरा करने के बाद, बस इसे फिर से लोड करें:launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
मार्कस अमलथिया मैग्नसन

6

यहां बताया गया है कि मैंने फेडोरा पर यह कैसे किया:

  • data.old जैसी किसी चीज़ के लिए अपनी पुरानी डेटा निर्देशिका का नाम बदलें
  • इसे चलाने से postgresql-setup initdbएक नई डेटा डायरेक्टरी बन जाएगी
  • तो भागो pg_upgrade -b /usr/lib64/pgsql/postgresql-9.0/bin/ -B /usr/bin/ -d data.old/ -D data

मुझे लगता है कि आपके लिए यह होगा:

pg_upgrade -b /usr/local/Cellar/postgresql/9.0.4/bin -B /usr/bin/ -d /usr/local/var/postgres.old/ -D /usr/local/var/postgres/
  • आप pg_hba.conf और postgresql.conf को data.old से नई डेटा निर्देशिका में कॉपी करना चाहते हैं।
  • पुनः पोस्टग्रेजल को फिर से शुरू करें

1

मैं "initdb" लाइन को भूल गया / भूल गया

initdb -D / usr / स्थानीय / var / पोस्टग्रेज

DB बनने के बाद, pg_upgrad ने मेरी विंडोज़ प्रणाली पर काम किया।


0

के लिए आर्क लिनक्स , वहाँ एक है विकि में समाधान है कि मेरे लिए ठीक काम किया:

pacman -S --needed postgresql-old-upgrade
su -
su - postgres -c 'mv /var/lib/postgres/data /var/lib/postgres/data-9.2'
su - postgres -c 'mkdir /var/lib/postgres/data'
su - postgres -c 'initdb --locale en_US.UTF-8 -E UTF8 -D /var/lib/postgres/data'
su - postgres -c 'pg_upgrade -b /opt/pgsql-9.2/bin/ -B /usr/bin/ -d /var/lib/postgres/data-9.2 -D /var/lib/postgres/data'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.