PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Não é possível descartar a função do PostgreSQL. Erro:`não pode ser descartado porque alguns objetos dependem dele`


DROP USER (ou DROP ROLE , mesma coisa) não pode continuar enquanto a função ainda possuir alguma coisa ou tiver privilégios concedidos em outros objetos.

Livre-se de todos os privilégios com DROP OWNED (o que não é muito óbvio pelo texto) . O manual:

Portanto, a sequência confiável de comandos para descartar uma função é:
REASSIGN OWNED BY ryan TO postgres;  -- or some other trusted role
DROP OWNED BY ryan;

Execute os dois comandos em todos os bancos de dados do mesmo cluster onde o papel possui qualquer coisa ou tem algum privilégio!
E finalmente:
DROP USER ryan;
  • REASSIGN OWNED altera a propriedade de todos os objetos atualmente pertencentes à função.
  • DROP OWNED então apenas revoga privilégios (propriedades fora do caminho).

Alternativamente, você pode pular REASSIGN OWNED . Então DROP OWNED irá (também) descartar todos os objetos pertencentes ao usuário. (Tem certeza?!)

Relacionado: