sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgresql - det går inte att släppa databasen på grund av vissa automatiska anslutningar till DB

Du kan förhindra framtida anslutningar:

REVOKE CONNECT ON DATABASE thedb FROM public;

(och möjligen andra användare/roller; se \l+ i psql )

Du kan sedan avsluta alla anslutningar till denna db förutom din egen:

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

På äldre versioner pid kallades procpid så du måste ta itu med det.

Eftersom du har återkallat CONNECT rättigheter, allt som försökte ansluta automatiskt borde inte längre kunna göra det.

Du kommer nu att kunna släppa DB.

Det här fungerar inte om du använder superanvändaranslutningar för normal drift, men om du gör det måste du åtgärda problemet först.

När du är klar med att släppa databasen, om du skapar databasen igen, kan du köra nedanstående kommando för att återställa åtkomsten

GRANT CONNECT ON DATABASE thedb TO public;


  1. Hur man löser oförmögen att byta kodningsfel när XML infogas i SQL Server

  2. Fråga med yttre kopplingar beter sig annorlunda i Oracle 12c

  3. CASCADE DELETE bara en gång

  4. Hur du moderniserar ditt företag 2022