Як оновити базу даних postgresl? Помилка несумісності


26

Я встановив postgresql через Homebrew.

У мене після оновлення виникла така проблема:

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

Для мене на OS X з Homebrew це було так.

  1. Встановлено нові Postgres з 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 (цей сценарій створений для вас автоматично в поточному режимі, коли ви проходите вищевказані кроки)
  6. rm delete_old_cluster.sh

Фантастичний і просто те, що мені знадобився друг! Спасибі. Особливо після оновлення Лева, що надходить від Snow Leopard. Перевірте сервер.log google люди !!
племмер

Це прекрасно працювало для мене, дякую! Зверніть увагу , що Postgres не повинен бути запущений , перш ніж робити ці кроки, так що якщо ви встановили його через Homebrew переконайтеся вивантажити запуску агента , який робить його запустився автоматично launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist. Після того, як всі вищезазначені дії будуть виконані, просто завантажте його ще раз:launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Маркус Амальтея Магнусон

6

Ось як я це зробив на Fedora:

  • перейменуйте свій старий каталог даних на щось на зразок 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 у новий каталог даних.
  • перезапустити postgresql

1

Я пропустив / забув рядок "initdb"

initdb -D / usr / local / var / postgres

Після створення БД pg_upgrade працював у моїй системі Windows.


0

Для Arch Linux є рішення у wiki, яке добре працювало для мене:

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 та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.