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

Как обновить базу данных Postgres в Cygwin?

Я обновил несколько пакетов Cygwin и теперь не могу запустить Postgres:

$ /usr/sbin/postmaster
FATAL:  database files are incompatible with server
DETAIL:  The data directory was initialized by PostgreSQL version 8.2, which is not compatible with this version 9.2.4.

Я попытался pg_upgrade но вам нужно указать как старый, так и новый двоичный файл. Кроме того, pg_upgrade говорит, что работает только с 8.3.

Я думал, что могу использовать setup-x86.exe, чтобы выбрать предыдущую версию, то есть 8.2.11-1, однако, когда я ее устанавливаю, я не могу запустить Postgres:

$ /usr/sbin/postgres.exe
Bad system call (core dumped)
  1. Удалите postgres 9
  2. Установите postgres 8.2
  3. Установить libpq
  4. /etc/rc.d/init.d/postgresql start
  5. Сделайте это для каждой базы данных:
    • pg_dump -f stocks.sql.gz -Z 9 -C акции
  6. /etc/rc.d/init.d/postgresql stop
  7. cd $ PGDATA / .. # / usr / share / postgresql / ..
  8. mv postgresql postgresql-8.2
  9. Установите postgres 9, postgresql-contrib, удалите libpq.
  10. /usr/sbin/pg_ctl.exe init
  11. /usr/sbin/pg_ctl.exe запустить
  12. createdb.exe # Создает БД с вашим именем пользователя
  13. gzip -dc stocks.sql.gz | psql # много предупреждений + ошибок

Обновление с 9.2 до 9.3

  1. Прочтите об обновлении Postgres: http://www.postgresql.org/docs/current/static/upgrading.html
  2. При необходимости установите старую версию Postgres. Кто-то ведет исторический архив версий Cygwin.
    1. Просмотрите метку времени нужного вам файла setup.ini: http://www.crouchingtigerhiddenfruitbat.org/Cygwin/timemachine.html
    2. Скопируйте адрес папки (не index.html)
    3. Бегать /setup-x86.exe -X с -X возможность игнорировать установочные подписи (они не архивируются).
    4. Вставьте адрес в диалоговое окно, чтобы выбрать сайт для загрузки. Затем вы увидите снимок пакетов, доступных за это время.
  3. Перезапустите cygserver, если вы закрыли его для обновления: Запуск от имени администратора: cygrunsrv -S cygserver
  4. Запустите старую версию Postgres: /usr/sbin/postmaster & или /usr/sbin/pg_ctl start
  5. Выгрузите БД во временный файл с pg_dumpall > /tmp/pg.sql
  6. Завершите работу Postgres /usr/sbin/pg_ctl.exe stop
  7. Переместить старый каталог данных mv /usr/share/postgresql /usr/share/postgresql-9.2
  8. Запустите установку в обычном режиме и установите последнюю версию Postgres. Обязательно выберите обычный сайт для загрузки.
  9. Инициализировать БД /usr/sbin/pg_ctl init
  10. Запустите новую версию Postgres /usr/sbin/pg_ctl.exe start
  11. Импортировать старую БД psql -d postgres -f /tmp/pg.sql