PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Erreur de suppression de la base de données Postgres :pq :impossible de supprimer la base de données actuellement ouverte

Parce que vous essayez d'exécuter dropDb commande sur la base de données, à laquelle vous avez une connexion ouverte.

Selon la documentation postgres :

Cela a du sens, car lorsque vous supprimez l'intégralité de la base de données, toutes les connexions ouvertes faisant référence à cette base de données deviennent invalides. L'approche recommandée consiste donc à se connecter à une autre base de données et à exécuter à nouveau cette commande.

Si vous êtes confronté à une situation où un client différent est connecté à la base de données et que vous voulez vraiment supprimer la base de données, vous pouvez forcer la déconnexion de tous les clients de cette base de données particulière.

Par exemple, pour forcer la déconnexion de tous les clients de la base de données mydb :

Si PostgreSQL <9.2

SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE datname = 'mydb';

Sinon

SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'mydb';

Remarque : Cette commande nécessite des privilèges de superutilisateur.

Ensuite, vous pouvez vous connecter à différentes bases de données et exécuter dropDb commande à nouveau.