別のマシンをターゲットとするpg_dump中に「pg_catalog.tablename」を作成する権限が拒否されました


11

一部のテーブルを9.5ベータ2から9.4.4サーバーにダンプしようとしています。私が使用しているコマンドの形式はかなり標準的です:

pg_dump -t table dbname | psql -h hostname -d dbname

私はPostgresユーザーを使用していますが、これはおそらく理想的ではないと思いますが、これらはどちらも私が使用する開発データ処理ボックスであり、以下のエラーに関連しています。最初に、エラーが発生しました

エラー:認識されない構成パラメーター "row_security"

これは、この機能が9.5で新しく追加されたために予想されます。そうです。Postgresの異なるバージョン間でpg_dumpを実行することはお勧めできませんが、非常にあいまいなバグに遭遇し、大きな静的データの量。

したがって、この恐ろしいハックを使用してrow_securityエラーを削除し、最初のエラーで停止をオンにします。

pg_dump -t tablemame dbname |sed 's/SET row_security = off;//'|
psql -v ON_ERROR_STOP=1 -h hostname -d dbname

私は今得ます:

エラー:「pg_catalog.tablename」を作成する権限が拒否されました詳細:システムカタログの変更は現在許可されていません

Postgresユーザー/ロールを使用することは望ましくないかもしれませんが、私の理解では、このような性質の権限の問題はないはずです。これは1回限りの操作であり、これらはライブサービスに接続されていないデータ処理開発ボックスであるため、理想的な企業データアクセスポリシーよりも好都合です。そうは言っても、これを正しく行う方法を理解し、今後これを回避することは良いことです。

回答:


13

これは、pg_dumpを使用してダンプしているスキーマがターゲットデータベース/マシンに存在しない場合に発生するややあいまいなエラーメッセージが原因であることがわかります。この質問は、他の人の役に立つことを願って残しておきます。


幸いにも私はこれを見つけました。「パブリック」スキーマを手動で作成するだけで機能しました。
Robert Mikes、2018年

@RobertMikes。お役に立ててうれしいです。ややあいまいなエラーです。
ジョンパウエル

ありがとう-幸運にも私はこれに関与する前にこれを見つけました!
James Fry、

+1。この問題は、私もつまずきました!
ジェイカミンズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.