27

以前は同じ名前「xyz」のスキーマの所有者だったロール「xyz」を削除しようとしています。以下のようにスキーマの所有権を変更し、念のため再割り当てされた所有権を実行しました (ただし、すべてのテーブルはスーパーユーザー権限を持つ別のユーザーによって作成されました)。だから私はこれらすべてを実行します:

alter schema xyz owner to postgres;
reassign owned by xyz to postgres;
alter default privileges in schema seeds revoke all on tables from xyz cascade;
alter default privileges in schema seeds revoke all on sequences from xyz cascade;
alter default privileges in schema seeds revoke all on functions from xyz cascade;

それでもエラーが発生します:

drop role xyz;
ERROR:  role "xyz" cannot be dropped because some objects depend on it
DETAIL:  owner of default privileges on new relations belonging to role xyz in schema xyz

参考までに:

postgres=# \du rsi
List of roles
Role name |   Attributes   | Member of   
-----------+----------------+-----------
rsi       | No inheritance | {}

私は何が欠けていますか?どんな助けでも大歓迎です!ありがとう!!

4

2 に答える 2

31

のPostgreSQL のドキュメントALTER DEFAULT PRIVILEGESメモ セクションから抜粋:

デフォルト権限が変更されたロールを削除する場合は、デフォルト権限の変更を元に戻すか、DROP OWNED BY を使用してロールのデフォルト権限エントリを削除する必要があります。

この場合に関するドキュメントからのもう1つの価値のある言及は、DROP OWNED BY

DROP OWNED は現在のデータベース内のオブジェクトにのみ影響するため、通常、削除するロールが所有するオブジェクトを含む各データベースでこのコマンドを実行する必要があります。

したがって、マイレージは異なる場合があり、より多くの DB でステートメントを発行する必要がある場合があります。

DROP OWNED BY質問に記載されているのと同じメッセージを受け取ったので、ステートメントを試してみましたが、うまくいきました。お役に立てれば!

于 2012-07-31T23:05:39.230 に答える