[pgsql-jp: 41960] pg_restoreについて

sato y_sato_priv @ yahoo.co.jp
2017年 9月 9日 (土) 08:14:40 JST


はじめまして。サトウと申します。
駄文・長文ご容赦ください。

pg_dumpで作成したダンプをリストアする
ということを行っております。
やっていることは、postgresでダンプ、リストアを実行し
postgres以外のユーザ(非スーパーユーザ)でそのDBを使用する
ということなのですが、その際に以下のような現象が発生し困っております。

OS:Windows7
PostgreSQL-9.6.3

1.createuser -U postgres user1 でuser1を作成(後ほどpassは設定)
2.psql -U postgres でPostgreSQLにアクセス
3.create databaseでDB作成
4.create tableでtableを作成
5.alter databaseでDBの所有者をuser1に変更

この状態でpsql -U user1 
databaseとすると、user1でも問題なくDBにアクセスできました。

ここで
pg_dump -v -Fc -U postgres -f TEST.dump databaseとし
pg_restore -v -e -c --if-exists -Fc -U postgres -d database TEST.dumpとして
リストアした後にuser1でアクセスすると、リレーションがありませんとなってしまいます。
postgresでアクセスするときちんとテーブルが表示され操作もできます。
user1にもすべてのアクセス権をつけて試しましたがリレーションがありませんから変わりませんでした。

pg_restoreの際に-C(--create)オプションをつけた場合はこの現象は起こりませんでした。

\dtや\lで確認した限りでは設定に差異は見つけられず、
ネットでスキーマの設定の問題かもとありましたが、
publicスキーマで生成されており、search_pathの設定も
public, "$user"にして試しましたが変化ありませんでした。

リストアに失敗してしまった場合に元あるDBを消したくないためCオプションは使いたくないと思っております。

なぜこのような現象が発生するかが見当がつかず詰まっています。
もし解決作をご存知の方がいらっしゃれば、ご教授をお願い致します。


pgsql-jp メーリングリストの案内