web-dev-qa-db-ja.com

PostGISバージョンによってブロックされたAmazonRDSでのPostgreSQLのアップグレード

RDSインスタンスを9.5.4から9.6.1にアップグレードしようとしていますが、最初にアップグレードする必要があるPostGISバージョンに関するエラーによってブロックされています。

データベースインスタンスがアップグレードできない状態です:アップグレード前のチェックに失敗しました:古いバージョンのPostGISがインストールされているデータベースが1つ以上あるため、インスタンスをアップグレードできませんでした。 PostGISのすべてのインストールをアップグレードして、再試行してください。

RDS9.5.4でサポートされているPostGISの最高バージョンは2.2.2です。

拡張postgisアップデートを変更する

収量

注意:拡張機能「postgis」のバージョン「2.2.2」はすでにインストールされています

9.6.1のバージョンに明示的にアップグレードしてみました

拡張postgisアップデートを「2.3.0」に変更

取得

[エラー]エラー:拡張機能「postgis」には、バージョン「2.2.2」からバージョン「2.3.0」への更新パスがありません

だから私の質問は:どうすればアップグレードできますか?アップグレード前に拡張機能を削除し、後で新しいバージョンをインストールできると思いますが、それがデータにどのように影響するか、またはそれによって空間構造や機能が適切にアップグレードされるかどうかはわかりません。

このシナリオについての言及がないか、 ドキュメント をすでに確認しました

17

9.6.1にアップグレードする前に、インスタンスが9.5.4にアップグレードされていることを確認してください。

DBインスタンスの1つで同じエラーが発生しましたが、9.5.2で発生しました。最初に9.5.4にアップグレードし、次に9.6.1にアップグレードすると、すべてが期待どおりに機能しました。

私が試した次のインスタンスはすでに9.5.4にあり、同じメッセージが表示されました。

だから最初に私はした:

ALTER EXTENSION postgis UPDATE;

次に、サーバーをアップグレードしました

9

サーバーを9.3から9.6にアップグレードしようとすると、この正確な問題が発生しました。少し試行錯誤して、成功した道を見つけました。アップグレードプロセスの詳細:アップグレードするたびに、RDSを手動で再起動する必要があります。アップグレードで自動的に処理されると思いますが、そうではありません。

出発点:

SELECT version(); ->  PostgreSQL 9.3.20 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-9), 64-bit
SELECT postgis_full_version(); ->  POSTGIS="2.1.8 r13780" GEOS="3.5.0-CAPI-1.9.0 r4084" PROJ="Rel. 4.9.2, 08 September 2015" GDAL="GDAL 1.11.5, released 2016/07/01" LIBXML="2.9.1" LIBJSON="UNKNOWN" RASTER
ALTER EXTENSION postgis UPDATE; ->  Returned success, but no change to PostGIS version

9.4にアップグレードした後:

SELECT version(); ->  PostgreSQL 9.4.18 on x86_64-unknown-linux-gnu, compiled by gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-9), 64-bit
SELECT postgis_full_version(); ->  POSTGIS="2.1.8 r13780" GEOS="3.5.0-CAPI-1.9.0 r4084" PROJ="Rel. 4.9.2, 08 September 2015" GDAL="GDAL 1.11.5, released 2016/07/01" LIBXML="2.9.1" LIBJSON="UNKNOWN" RASTER
ALTER EXTENSION postgis UPDATE; ->  Returned success, but no change to PostGIS version

9.5にアップグレードした後:

SELECT version(); ->  PostgreSQL 9.5.13 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-9), 64-bit
SELECT postgis_full_version(); ->  POSTGIS="2.1.8 r13780" GEOS="3.5.1-CAPI-1.9.1 r4246" PROJ="Rel. 4.9.2, 08 September 2015" GDAL="GDAL 1.11.5, released 2016/07/01" LIBXML="2.9.1" LIBJSON="UNKNOWN" RASTER
ALTER EXTENSION postgis UPDATE; ->  SQL Error [XX000]: ERROR: attempt to redefine parameter "postgis.backend"

だから私はここで少し立ち往生し、PostGISを正常にアップグレードすることができなかったようです。次に、これ post が同じエラーを説明しているのを見て、RDSインスタンスがパッチを受信したかどうかを確認するために24時間待つことにしました。ログには何も気づかなかったのですが、そうだったようです。いずれにせよ、私自身からの変更なしで、翌日、PostGIS拡張機能を正常にアップグレードすることができました

ALTER EXTENSION postgis UPDATE; ->  Returned success
SELECT postgis_full_version(); ->  POSTGIS="2.2.5 r15298" GEOS="3.5.1-CAPI-1.9.1 r4246" PROJ="Rel. 4.9.3, 15 August 2016" GDAL="GDAL 2.0.3, released 2016/07/01" LIBXML="2.9.1" LIBJSON="0.12" RASTER

その後、RDSインスタンスを9.6にアップグレードすることができました

SELECT version(); ->  PostgreSQL 9.6.9 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.3 20140911 (Red Hat 4.8.3-9), 64-bit
SELECT postgis_full_version(); ->  POSTGIS="2.2.5 r15298" GEOS="3.5.1-CAPI-1.9.1 r4246" PROJ="Rel. 4.9.3, 15 August 2016" GDAL="GDAL 2.0.3, released 2016/07/01" LIBXML="2.9.1" LIBJSON="0.12" RASTER
ALTER EXTENSION postgis UPDATE; ->  Returned success
SELECT postgis_full_version(); ->  POSTGIS="2.3.7 r16523" PGSQL="96" GEOS="3.6.2-CAPI-1.10.2 4d2925d6" PROJ="Rel. 4.9.2, 08 September 2015" GDAL="GDAL 2.1.4, released 2017/06/23" LIBXML="2.9.1" LIBJSON="0.12" RASTER

拡張機能への明らかなパッチをただ待つのではなく、すぐにトリガーする方法を知りたいのですが、まだそれを理解できていません。

6
Mike

私も同じ問題を抱えていました。問題は、複数のデータベースがあったことです。メインデータベースをアップグレードしましたが、他のデータベースを忘れました。同じサーバー内のすべてのデータベースを確認し、次のコマンドを使用して各データベースをアップグレードする必要があります。

ALTER EXTENSION postgis UPDATE;
2
fyelci

エラー:パラメータ "postgis.backend"を再定義しようとする本当の理由は、/を呼び出してoldpostGISライブラリを参照したためです。PostGIS_full_version()関数。その結果、セッションにはまだがあるため、ライブラリ構成をnewバージョンに更新できません。ロードされた古い関数。

データベースから切断して新しいセッションに接続し、すぐにALTER EXTENSION postgis UPDATE;コマンドbeforegis関数を使用しようとする必要があります。

既存の接続は、切断して再接続するまで古い機能を参照し、その時点で新しい機能が読み込まれます。

AWS RDS PostgreSQLのアップグレード手順が完了したら、パラメータグループの同期を完了するために、インスタンスをさらに再起動する必要があります。 postGIS拡張機能の更新を行う前にこれを行うことをお勧めします。

次を使用して、ライブラリのどのバージョンが存在するかを確認できます。pg_procから個別のprobinを選択します。probinIS NOT null order by probin and probin like '%postgis%';

1
Ian Timms