I am trying to drop a role 'xyz' that was previously the owner of the schema with the same name 'xyz'. I altered the schema ownership as below, and run reassigned ownership just in case (although all tables were created by a different user with superuser power). So I run all these:
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;
And still getting the error:
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
Also FYI:
postgres=# \du rsi
List of roles
Role name | Attributes | Member of
-----------+----------------+-----------
rsi | No inheritance | {}
What am I missing? Any help would be appreciated! Thanks!!
Taken from the PostgreSQL documentation on
ALTER DEFAULT PRIVILEGES
, Notes section:Another worthy mention from the documentation regarding
DROP OWNED BY
in this case is also thatTherefore, your mileage may vary, meaning that you may have to issue the statement in more DBs.
Having received the same messages as mentioned in the question, I've tried out the
DROP OWNED BY
statement and it worked. Hope this helps!First run command :
drop owned by xyz;
then:
drop role xyz;
Read PostgreSQL Documentation regarding Drop Owned By.