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」への更新パスがありません
だから私の質問は:どうすればアップグレードできますか?アップグレード前に拡張機能を削除し、後で新しいバージョンをインストールできると思いますが、それがデータにどのように影響するか、またはそれによって空間構造や機能が適切にアップグレードされるかどうかはわかりません。
このシナリオについての言及がないか、 ドキュメント をすでに確認しました
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.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
拡張機能への明らかなパッチをただ待つのではなく、すぐにトリガーする方法を知りたいのですが、まだそれを理解できていません。
私も同じ問題を抱えていました。問題は、複数のデータベースがあったことです。メインデータベースをアップグレードしましたが、他のデータベースを忘れました。同じサーバー内のすべてのデータベースを確認し、次のコマンドを使用して各データベースをアップグレードする必要があります。
ALTER EXTENSION postgis UPDATE;
エラー:パラメータ "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%';