1

重複の可能性:
postgresql データベースの所有者がデータベースにアクセスできない - 「関係が見つかりません。」

中心的な問題: Django の Web サイトで、 Djangoによって生成された SQL スクリプトを実行しようとしたに接続すると、リレーション (テーブル) が存在しないという不平を言っています。pg_dump MY_DATABASE_NAME -cOx -E UTF8 > MY_SCRIPT_NAME.sql

スクリプトを実行する前に、私は接続することができ、すべてがうまくいっています。

スクリプトを実行した後、私は痛みの世界に住んでいますが、PostgreSQL ですべてのテーブルの所有者を同時に変更するで説明されているさまざまな方法を使用して、MY_DATABASE_NAME とテーブルの所有権を調べて変更することで軽減しようとしました。

\dt次のようにサーバーにpostgresユーザーとして最初にログインした後にのみ、MY_DATABASE_NAME経由でのみリレーションを表示できるようですsudo su - postgres

postgres ユーザーに切り替えpsql MY_DATABASE_NAME -U MY_NON_POSTGRES_USER に SSH で実行すると、\dt' results in a関係が見つかりませんというメッセージが表示されます。

最初は、権限または所有権が問題であると推測しました。サーバーの postgres ユーザーとしてログインし、MY_DATABASE_NAME とそのすべてのテーブルの所有者を MY_NON_POSTGRES_USER に変更しました。

前と同じ結果。Postgres ユーザーのリレーションが表示されますが、別のロールとしてログインすると「リレーションが見つかりません」というメッセージが表示され、Web サイトで「リレーション some_table が存在しません」と不平を言われます

なぜこれが私に起こっているのですか?

4

1 に答える 1

5

わお。私は本当に私の質問のTL;DR説明を作成したところ、すぐに私の愚かさに気付きました:

MY_DATABASE_NAME に接続し、すべてのテーブルとデータベースの正しいユーザーに所有権を与えましたが、次のことを忘れていました。

REVOKE ALL ON SCHEMA public FROM MY_NON_POSTGRES_USER;

GRANT ALL ON SCHEMA public TO MY_NON_POSTGRES_USER;

もう痛みはありません。すべてが再び世界とうまくいっています。

于 2011-10-23T14:13:48.230 に答える