Postgresql – impossible de supprimer la firebase database en raison de certaines connexions automatiques à la firebase database

Chaque fois que j’essaie de supprimer une firebase database, je reçois:

ERROR: database "pilot" is being accessed by other users DETAIL: There is 1 other session using the database. 

Quand j’utilise:

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

J’ai mis fin à la connexion à partir de cette firebase database, mais si j’essaie de supprimer la firebase database après cela, quelqu’un se connecte automatiquement à cette firebase database et donne cette erreur. Qu’est-ce qui pourrait faire ça? Personne n’utilise cette firebase database, sauf moi.

Vous pouvez empêcher les connexions futures:

 REVOKE CONNECT ON DATABASE thedb FROM public; 

(et éventuellement d’autres utilisateurs / rôles; voir \l+ en psql )

Vous pouvez alors mettre fin à toutes les connexions à cette firebase database sauf la vôtre:

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

Sur les anciennes versions, pid s’appelait procpid , vous devrez donc vous en occuper.

Puisque vous avez révoqué les droits CONNECT , tout ce qui essayait de se connecter automatiquement ne devrait plus pouvoir le faire.

Vous pourrez maintenant supprimer la firebase database.

Cela ne fonctionnera pas si vous utilisez des connexions super-utilisateur pour des opérations normales, mais si vous le faites, vous devez d’abord résoudre ce problème.

Chaque fois que j’essaie de supprimer une firebase database, je reçois:

 ERROR: database "pilot" is being accessed by other users DETAIL: There is 1 other session using the database. 

Vous devez d’abord révoquer

 REVOKE CONNECT ON DATABASE TARGET_DB FROM public; 

Ensuite, utilisez:

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

Cela fonctionnera sûrement.

Il suffit de vérifier quelle est la connexion, d’où elle vient. Vous pouvez voir tout cela dans:

 select * from pg_stat_activity where datname = 'TARGET_DB'; 

Peut-être que c’est votre connexion?

J’ai trouvé une solution à ce problème essayez d’exécuter cette commande dans le terminal

 ps -ef | grep postgres 

tuer le processus par cette commande

 sudo kill -9 PID 

Si aucun impact potentiel sur les autres services de votre machine, effectuez simplement le service postgresql restart

Cela signifie qu’un autre utilisateur accède à la firebase database … Redémarrez simplement le postgresql. Cette commande fera l’affaire

 root@kalilinux:~#sudo service postgresql restart 

Ensuite, essayez de déposer la firebase database:

 postgres=# drop database accment_revamp 

Ça fera l’affaire. Heureux codage

Solution pgAdmin 4 utilisant l’interface utilisateur

Activez d’abord l’activité d’affichage sur le tableau de bord si vous ne l’avez pas encore fait:

 File > Preferences > Dashboards > Display > Show Activity > true 

Désactivez maintenant tous les processus utilisant la firebase database:

  1. Cliquez sur le nom de la firebase database
  2. Cliquez sur Tableau de bord> Sessions
  3. Cliquez sur l’icône d’actualisation
  4. Cliquez sur l’icône de suppression (x) à côté de chaque processus pour les terminer.

Devrait maintenant être capable de supprimer la firebase database.

Dans le terminal, essayez cette commande:

 ps -ef | grep postgres 

vous verrez comme:

501 1445 3645 0 12h05 0: 00.03 Postgres: sasha dbname [local] inactif

Le troisième numéro (3645) est PID.

Vous pouvez supprimer ce

 sudo kill -9 3645 

Et après cela commencez votre connexion PostgreSQL.

Démarrer manuellement:

 pg_ctl -D /usr/local/var/postgres start