Delete a role and reassign what it owns

postgres roles & traffic

// what it does

Postgres refuses to drop a role that still owns tables or other objects, so the two-step is: reassign ownership to a successor role, then delete. The CLI surfaces both as first-class commands.

// shell

$ pscale role reassign mydb main <role-id> --successor app-rw
$ pscale role delete mydb main <role-id>

// gotcha

This is standard Postgres semantics, not a PlanetScale quirk — if `role delete` errors about dependent objects, it's telling you to run reassign first, not that something is broken.