web-dev-qa-db-ja.com

PostGISを使用してPostgreSQL 9.5を9.6にアップグレードする-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によって空でないDBに関するエラーが表示されます。

New cluster database "postgres" is not empty

そのため、catch-22に陥っています。拡張機能をインストールしないとアップグレードできませんが、一度インストールすると、データベースが空ではないと見なされます。

これを修正するためのヒントはありますか?

4
Jeremy Wilson

問題は、古いクラスターのpostgis extensionバージョンが新しいクラスターのlibraryバージョンと同じでないことです。そのため、データベースを移行しようとしたときに、古いバージョンの拡張機能を見つけることができません。

これを修正するには、各my_database postgis拡張機能がインストールされています。次を実行:

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

oldクラスター内。次に、pg_updateを実行します。

1
Dan

9.6のインストールには、おそらくpostgis 2.3および対応するrtpostgis-2.3ライブラリが含まれています。 9.6インストールにpostgis 2.2のライブラリがある場合、pg_upgradeは正常に動作するはずです。

Postgis 2.3が必要な場合、おそらくpg_dumpallとpg_restoreが必要になります。

0
Andreas Rogge