Назад |
Перейти на главную страницу
Как обновить базу данных 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)
- Удалите postgres 9
- Установите postgres 8.2
- Установить libpq
- /etc/rc.d/init.d/postgresql start
- Сделайте это для каждой базы данных:
- pg_dump -f stocks.sql.gz -Z 9 -C акции
- /etc/rc.d/init.d/postgresql stop
- cd $ PGDATA / .. # / usr / share / postgresql / ..
- mv postgresql postgresql-8.2
- Установите postgres 9, postgresql-contrib, удалите libpq.
- /usr/sbin/pg_ctl.exe init
- /usr/sbin/pg_ctl.exe запустить
- createdb.exe # Создает БД с вашим именем пользователя
- gzip -dc stocks.sql.gz | psql # много предупреждений + ошибок
Обновление с 9.2 до 9.3
- Прочтите об обновлении Postgres: http://www.postgresql.org/docs/current/static/upgrading.html
- При необходимости установите старую версию Postgres. Кто-то ведет исторический архив версий Cygwin.
- Просмотрите метку времени нужного вам файла setup.ini: http://www.crouchingtigerhiddenfruitbat.org/Cygwin/timemachine.html
- Скопируйте адрес папки (не index.html)
- Бегать
/setup-x86.exe -X
с -X
возможность игнорировать установочные подписи (они не архивируются). - Вставьте адрес в диалоговое окно, чтобы выбрать сайт для загрузки. Затем вы увидите снимок пакетов, доступных за это время.
- Перезапустите cygserver, если вы закрыли его для обновления: Запуск от имени администратора:
cygrunsrv -S cygserver
- Запустите старую версию Postgres:
/usr/sbin/postmaster &
или /usr/sbin/pg_ctl start
- Выгрузите БД во временный файл с
pg_dumpall > /tmp/pg.sql
- Завершите работу Postgres
/usr/sbin/pg_ctl.exe stop
- Переместить старый каталог данных
mv /usr/share/postgresql /usr/share/postgresql-9.2
- Запустите установку в обычном режиме и установите последнюю версию Postgres. Обязательно выберите обычный сайт для загрузки.
- Инициализировать БД
/usr/sbin/pg_ctl init
- Запустите новую версию Postgres
/usr/sbin/pg_ctl.exe start
- Импортировать старую БД
psql -d postgres -f /tmp/pg.sql