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に陥っています。拡張機能をインストールしないとアップグレードできませんが、一度インストールすると、データベースが空ではないと見なされます。
これを修正するためのヒントはありますか?
問題は、古いクラスターのpostgis extensionバージョンが新しいクラスターのlibraryバージョンと同じでないことです。そのため、データベースを移行しようとしたときに、古いバージョンの拡張機能を見つけることができません。
これを修正するには、各my_database
postgis拡張機能がインストールされています。次を実行:
psql my_database postgres -c 'ALTER EXTENSION postgis UPDATE TO "2.3.2";'
oldクラスター内。次に、pg_updateを実行します。
9.6のインストールには、おそらくpostgis 2.3および対応するrtpostgis-2.3ライブラリが含まれています。 9.6インストールにpostgis 2.2のライブラリがある場合、pg_upgradeは正常に動作するはずです。
Postgis 2.3が必要な場合、おそらくpg_dumpallとpg_restoreが必要になります。