4

ローカルで開発したデータベースを開発サーバーにアップロードしようとしています。

マシンに PostgreSQL 9.1 をインストールし、開発サーバーは 8.4 を使用しています。

9.1 で作成されたダンプ ファイルを使用してデータベースを 8.4 に復元しようとすると、次のエラーが表示されます。

pg_restore: [archiver (db)] could not execute query: ERROR:  syntax error at or near "EXTENSION"
LINE 1: CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalo...

簡単な調査によると、「EXTENSION」は9.1より前には存在しないことがわかりました。

アップロードしようとしているデータベースはほとんどのデータで PostGIS 拡張機能に依存しているため、pg_dump で「拡張機能」を無視するオプションを探す必要があるかどうかはよくわかりません。

開発サーバーをアップグレードして、開発サーバーにPostGISをインストールするのも一つの選択肢ですが、開発したデータベースの機能を維持したまま、サーバー上で何も編集する必要がない別ルートを知りたいです。

もちろん、他の回避策も歓迎します。データベースをサーバーにアップロードする唯一の目的は、チームのために何かをデプロイする必要があるときにプロジェクトで行う必要のある再構成の量を減らすことです。

4

2 に答える 2

3

データベースのバックポートは苦痛で困難な場合があります。

8.4 を使用pg_dumpしてダンプすることもできますが、おそらく失敗するでしょう。

おそらく、テーブルと関数の定義を--schema-onlyダンプ テキスト ファイルから抽出し、それらを古い DB に手動でロードしてから、それpg_dump --data-onlyを復元してデータをインポートすることをお勧めします。

その後、自分のマシンでも作業を続ける場合は、PostgreSQL 8.4 をインストールし、それをさらなる開発に使用してください。これにより、互換性の問題がこれ以上発生せず、ダンプを簡単に移動できます。

あなたの立場では、古いターゲット サーバーを 9.1 にアップグレードするだけです。

于 2012-10-05T04:13:12.687 に答える