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

Обновите PostgreSQL 9.5 до 9.6 с помощью PostGIS - pg_upgrade

Я пытаюсь обновить сервер 9.5 до 9.6, и pg_upgrade выдает следующую ошибку:

Performing Consistency Checks
-----------------------------
Checking cluster versions                                   ok
Checking database user is the install user                  ok
Checking database connection settings                       ok
Checking for prepared transactions                          ok
Checking for reg* system OID user data types                ok
Checking for contrib/isn with bigint-passing mismatch       ok
Checking for roles starting with 'pg_'                      ok
Creating dump of global objects                             ok
Creating dump of database schemas
                                                        ok
Checking for presence of required libraries                 fatal

Your installation references loadable libraries that are missing from the
new installation.  You can add these libraries to the new installation,
or remove the functions using them from the old installation.  A list of
problem libraries is in the file:
    loadable_libraries.txt

Который содержит:

could not load library "$libdir/rtpostgis-2.2":
ERROR:  could not access file "$libdir/rtpostgis-2.2": No such file or directory

Когда я запускаю сервер и запускаю «CREATE EXTENSION postgis», а затем останавливаю сервер, pg_upgrade затем выдает мне ошибку о непустой БД:

New cluster database "postgres" is not empty

Итак, я попался в ловушку-22 - я не могу выполнить обновление без установки расширения, но как только я это сделаю, база данных будет считаться не пустой.

Есть советы, как это исправить?

Проблема в том, что postgis расширение версия в старом кластере не совпадает с библиотека версия в новой. Поэтому, когда он пытается перенести базу данных, он не может найти старую версию расширения.

Чтобы исправить это, для каждого my_database с установленным расширением postgis, запустите:

psql my_database postgres -c 'ALTER EXTENSION postgis UPDATE TO "2.3.2";'

в старый кластер. Затем запустите pg_update.

В вашей установке 9.6, вероятно, есть postgis 2.3 и соответствующая библиотека rtpostgis-2.3. Если у вас были библиотеки для postgis 2.2 в установке 9.6, pg_upgrade должен работать нормально.

Если вам нужен postgis 2.3, вам, вероятно, придется использовать pg_dumpall и pg_restore.