以前は同じ名前「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 | {}
何が足りないのですか?どんな助けでもいただければ幸いです!ありがとう!
PostgreSQLドキュメントALTER DEFAULT PRIVILEGES
、メモセクションから取得:
デフォルトの特権が変更されたロールを削除する場合は、デフォルトの特権の変更を元に戻すか、DROP OWNEDBYを使用してロールのデフォルトの特権エントリを削除する必要があります。
この場合のDROP OWNED BY
に関するドキュメントからの別の 言及に値する も
DROP OWNEDは現在のデータベース内のオブジェクトにのみ影響するため、通常、削除するロールが所有するオブジェクトを含む各データベースでこのコマンドを実行する必要があります。
したがって、マイレージは異なる場合があります。つまり、より多くのDBでステートメントを発行する必要がある場合があります。
質問で述べたのと同じメッセージを受け取ったので、DROP OWNED BY
ステートメントを試してみましたが、うまくいきました。お役に立てれば!