2012-03-23 9 views
12

以前は同じ名前の「xyz」のスキーマの所有者であったロール「xyz」を削除しようとしています。私は以下のようにスキーマの所有権を変更し、場合によっては再割り当てされた所有権を実行します(ただし、すべてのテーブルはスーパーユーザー権限を持つ別のユーザーによって作成されています)。だから私は、これらすべてを実行します。デフォルトの特権のためにPostgreSQLのドロップロールが失敗する

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 

もFYI:私は

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

何をしないのですか?どんな助けもありがとう!ありがとう!! ALTER DEFAULT PRIVILEGESPostgreSQL documentationから撮影

+0

これをdba.stackexchange.comに移動しますか? –

答えて

13

、ノートセクション:

If you wish to drop a role for which the default privileges have been altered, it is necessary to reverse the changes in its default privileges or use DROP OWNED BY to get rid of the default privileges entry for the role.

ドキュメントから別のworthy mentionこの場合DROP OWNED BYについては

Because DROP OWNED only affects the objects in the current database, it is usually necessary to execute this command in each database that contains objects owned by a role that is to be removed.

するため、あなたの走行距離があることを意味し、変化することもありますより多くのDBでステートメントを発行する必要があるかもしれません。

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

+5

'DROP OWNED BY usr;'の後ろに 'DROP USER usr;'がありました。ありがとう! – cvsguimaraes

関連する問題