1. ホーム
  2. postgresql

PostgreSQL 9.1 PLPGSQLに関するpg_restoreのエラー

2023-08-28 05:57:26

質問

私はdjangoプロジェクトでPostgresを使用しています。現在、できるだけシンプルに、ユーザがバックアップをクリックするとpg_dumpを実行し、バックアップの復元をクリックするとpg_restoreを実行するデータベースバックアップ/リストアシステムを導入しているところです。

実際に pg_restore を実行しようとするまでは、すべてがうまくいっているように見えますが、そのときにこのエラーが発生します。

pg_restore: [アーカイバ (db)] TOC エントリ 3206 からのエラー; 0 0 COMMENT EXTENSION plpgsql pg_restore: [アーカイバ (データベース)] はクエリを実行できませんでした。 ERROR: plpgsql 拡張の所有者でなければなりません コマンドは次のとおりです。COMMENT ON EXTENSION plpgsql IS 'PL/pgSQL procedural language';

私はplpgsqlが何であるかなどを調べ、それを理解しました。そして、エラーに関して、私は手動で"拡張機能の所有者をスクリプトを実行し、データベース自体を所有するユーザに設定しようとしましたが、それは何も変えませんでした。

これはすべて pg_dump によって自動的に作成されるため、コメント行を削除することはできず、コメントを無効にするフラグもありません (私が知っている限り)。

どのように解決するのですか?

pg_restoreが所有しない余分なデータをリストアしようとしているようです。試しに -n public オプションをpg_restoreのコマンドラインに追加してみてください。これはpg_restoreにパブリックスキーマの内容のみをリストアするように指示します。コマンドラインは以下のようになるはずです。

pg_restore -U username -c -n public -d database_name