PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Postgresql:impossibile eliminare il database a causa di alcune connessioni automatiche al DB

Puoi impedire connessioni future:

REVOKE CONNECT ON DATABASE thedb FROM public;

(ed eventualmente altri utenti/ruoli; vedere \l+ in psql )

Puoi quindi terminare tutte le connessioni a questo db tranne il tuo:

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

Nelle versioni precedenti pid è stato chiamato procpid quindi dovrai affrontarlo.

Poiché hai revocato CONNECT diritti, qualunque cosa stesse tentando di connettersi automaticamente non dovrebbe più essere in grado di farlo.

Ora potrai eliminare il DB.

Questo non funzionerà se stai utilizzando connessioni di superutente per le normali operazioni, ma se lo fai devi prima risolvere il problema.

Dopo aver terminato di eliminare il database, se crei di nuovo il database, puoi eseguire il comando seguente per ripristinare l'accesso

GRANT CONNECT ON DATABASE thedb TO public;