Назад | Перейти на главную страницу

Как обновить базу данных postgresql? Ошибка несовместимости

Я установил 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

ошибка.

Для меня на 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

Вот как я сделал это на 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

Я пропустил / забыл строку "initdb"

initdb -D / usr / локальный / var / postgres

После создания БД pg_upgrade работал в моей системе Windows.

Для Arch Linux, Eсть решение в вики это сработало для меня:

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'