sql >> Database >  >> RDS >> PostgreSQL

Postgresql - kan database niet verwijderen vanwege enkele automatische verbindingen met DB

U kunt toekomstige verbindingen voorkomen:

REVOKE CONNECT ON DATABASE thedb FROM public;

(en mogelijk andere gebruikers/rollen; zie \l+ in psql )

U kunt dan alle verbindingen met deze database beëindigen, behalve die van uzelf:

SELECT pid, pg_terminate_backend(pid) 
FROM pg_stat_activity 
WHERE datname = current_database() AND pid <> pg_backend_pid();

Op oudere versies pid heette procpid dus daar zul je het mee moeten doen.

Sinds je CONNECT hebt ingetrokken rechten, wat er ook probeerde om automatisch verbinding te maken, zou dit niet langer moeten kunnen.

U kunt nu de DB verwijderen.

Dit werkt niet als je superuser-verbindingen gebruikt voor normale bewerkingen, maar als je dat doet, moet je dat probleem eerst oplossen.

Nadat u klaar bent met het verwijderen van de database, kunt u, als u de database opnieuw maakt, onderstaande opdracht uitvoeren om de toegang te herstellen

GRANT CONNECT ON DATABASE thedb TO public;


  1. DBaaS, cloud en transparante queryrouting

  2. SQL:selecteer dynamische kolomnaam op basis van variabele

  3. AANGEPASTE BESTELLING OP Uitleg:

  4. Hoe Cotd() werkt in PostgreSQL