J'ai besoin d'un accès exclusif à une base de données. Est-il possible d'utiliser une commande SQL pour "détacher" tous les autres utilisateurs d'une base de données postgres. Ou peut-être en fermant toutes les autres connexions et en obtenant ensuite un accès exclusif.
Il s'agit de tests unitaires et les tests ne sont exécutés que manuellement, il n'y a donc aucun danger. Seules les anciennes connexions mortes seront affectées.
Il n'y a aucun autre utilisateur se connectant à ces bases de données les plus instables.
Les anciennes connexions mortes viennent du développement. Cela se produit tout le temps lorsqu'un test qui est en cours d'écriture ou qui échoue ne sort pas propre.
Si quelqu'un doit également verrouiller les autres utilisateurs pendant un certain temps après les avoir déconnectés dans un scénario de production, voir la réponse de Scott Marlowe ci-dessous: /dba//a/6184/2024
Voir aussi cette question similaire sur dba: comment supprimer toutes les connexions à une base de données spécifique sans arrêter le serveur?
la source
procpid
été renommépid
, alors faites attention à cela.Le problème ici est double, vous devez d'abord déconnecter ces utilisateurs et deuxièmement, vous devez les garder hors de votre serveur. Plutôt que de révoquer les perms de connexion, j'utilise habituellement pg_hba.conf pour refuser les nouvelles connexions de certaines machines et / ou utilisateurs, puis il suffit de faire un arrêt rapide pg_ctl -m; pg_ctl commence à supprimer toutes les connexions actuelles. Avec Slony faisant des changements DDL, c'est à peu près une nécessité ou vous obtiendrez des blocages partout.
la source