Comment puis-je tuer toutes mes connexions postgresql?
J'essaye un rake db:drop
mais j'obtiens:
ERROR: database "database_name" is being accessed by other users
DETAIL: There are 1 other session(s) using the database.
J'ai essayé d'arrêter les processus que je vois d'un ps -ef | grep postgres
mais cela ne fonctionne pas non plus:
kill: kill 2358 failed: operation not permitted
database
postgresql
DanS
la source
la source
Réponses:
Vous pouvez utiliser pg_terminate_backend () pour tuer une connexion. Vous devez être superutilisateur pour utiliser cette fonction. Cela fonctionne sur tous les systèmes d'exploitation de la même manière.
Avant d'exécuter cette requête, vous devez RÉVOQUER les privilèges CONNECT pour éviter de nouvelles connexions:
la source
sudo
tuer de toute façon?sudo
en a pas dans PG.REVOKE
étape. Vous avez sauvé quelqu'un, encore une fois je suppose!Peut-être juste redémarrer
postgres
=>sudo service postgresql restart
la source
brew services restart postgresql
si vous avezAvec toutes les informations sur le processus en cours:
la source
MacOS, si postgresql a été installé avec brew :
Source: tuer une session / connexion postgresql
la source
OSX, Postgres 9.2 (installé avec homebrew)
Si votre datadir est ailleurs, vous pouvez savoir où il se trouve en examinant la sortie de
ps aux | grep postgres
la source
brew services restart postgresql
pg_ctl restart -D /usr/local/var/postgres
fait l'affaire! (Je n'ai même pas exécuté la première ou la troisième commande).Cela semble fonctionner pour PostgreSQL 9.1:
Sorti des esprits trouvés ici et ici .
Voici une version modifiée qui fonctionne pour PostgreSQL 9.1 et 9.2.
la source
J'utilise la tâche de râteau suivante pour remplacer la
drop_database
méthode Rails .lib/database.rake
Edit: c'est pour Postgresql 9.2+
la source
pg_stat_activity.procpid
place depg_stat_activity.pid
Postgres 9.1 et ci-dessous. Voir stackoverflow.com/a/5408501/444774Un moyen plus simple et plus mis à jour est:
ps -ef | grep postgres
pour trouver la connexion #sudo kill -9 "#"
de la connexionRemarque: Il peut y avoir un PID identique. Tuer un tue tout.
la source
J'ai eu ce problème et le problème était que Navicat était connecté à ma base de données Postgres locale. Une fois que j'ai déconnecté Navicat, le problème a disparu.
ÉDITER:
De plus, en dernier recours, vous pouvez sauvegarder vos données, puis exécuter cette commande:
... qui tuera tout ce à quoi l'utilisateur postgres accède. Évitez de le faire sur une machine de production, mais vous ne devriez pas avoir de problème avec un environnement de développement. Il est essentiel que vous vous assuriez que chaque
postgres
processus est vraiment terminé avant de tenter de redémarrer PostgreSQL après cela.EDIT 2:
En raison de ce message unix.SE, je suis passé de
kill -9
àkill -15
.la source
J'AI RÉSOLU DE CETTE FAÇON:
Dans mon Windows8 64 bits, juste
restart
le service: postgresql-x64-9.5la source
la source
Je voulais juste souligner que la réponse de Haris pourrait ne pas fonctionner si un autre processus d'arrière-plan utilise la base de données, dans mon cas, il s'agissait de travaux retardés, j'ai fait:
Et seulement alors, j'ai pu supprimer / réinitialiser la base de données.
la source
Quittez postgres et redémarrez-le. Simple, mais fonctionne à chaque fois pour moi, contrairement aux autres commandes cli.
la source
Il n'est pas nécessaire de l'abandonner. Supprimez et recréez simplement le schéma public. Dans la plupart des cas, cela a exactement le même effet.
la source
Scénario distant. Mais si vous essayez d'exécuter des tests dans une application rails, et que vous obtenez quelque chose comme
"ActiveRecord :: StatementInvalid: PG :: ObjectInUse: ERREUR: la base de données" myapp_test "est accédée par d'autres utilisateurs DÉTAIL: Il y a 1 autre session utilisant la base de données."
Assurez-vous de fermer pgAdmin ou tout autre outil GUI postgres avant d'exécuter des tests.
la source
Cas:
échec d'exécution de la requête:
Solution:
a. Afficher l'activité d'état de la requête comme suit:
b. Recherchez la ligne contenant la colonne "Requête":
c. Dans la même ligne, obtenez la valeur de la colonne 'PID'
ré. Exécutez ces scripts:
la source
Je suis sur un Mac et j'utilise PostgreSQL via
Postgres.app
. J'ai résolu ce problème en quittant et en redémarrant l'application.la source
Ouvrez PGadmin pour voir s'il y a une page de requête ouverte, fermez toutes les pages de requête et déconnectez le serveur PostgresSQL et connectez-le à nouveau et essayez l'option de suppression / suppression. Cela m'a aidé.
la source
Dans PG admin, vous pouvez déconnecter votre serveur (clic droit sur le serveur) et toutes les sessions seront déconnectées au redémarrage
la source
Pour moi, a travaillé ce qui suit:
J'utilise:
gitlab_edition: "gitlab-ce"
gitlab_version: '12 .4.0-ce.0.el7 '
la source
Tout d'abord, trouvez Postgres qui porte son fonctionnement
ps -ef | grep postgres
son renverra le numéro de port
tuer -9
port_number
Enfin, recommencez Postgres
la source