PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

PostgreSQL-Rolle kann nicht gelöscht werden. Fehler:„kann nicht gelöscht werden, da einige Objekte davon abhängen“.

DROP USER (oder DROP ROLE , dasselbe) kann nicht fortfahren, solange die Rolle noch etwas besitzt oder über gewährte Privilegien für andere Objekte verfügt.

Befreien Sie sich von allen Privilegien mit DROP OWNED (was aus dem Wortlaut nicht zu offensichtlich ist) . Das Handbuch:

Die zuverlässige Befehlsfolge zum Löschen einer Rolle lautet also:

REASSIGN OWNED BY ryan TO postgres;  -- or some other trusted role
DROP OWNED BY ryan;

Führen Sie beide Befehle in jeder Datenbank desselben Clusters aus wo die Rolle etwas besitzt oder irgendwelche Privilegien hat!
Und schließlich:

DROP USER ryan;
  • REASSIGN OWNED ändert den Besitz für alle Objekte, die derzeit der Rolle gehören.
  • DROP OWNED entzieht dann nur Privilegien (Besitzrechte aus dem Weg).

Alternativ können Sie REASSIGN OWNED überspringen . Dann DROP OWNED wird (auch) alle Objekte löschen, die dem Benutzer gehören. (Sind Sie sicher?!)

Verwandte: