346 votes

Déposer la base de données postgresql via la ligne de commande

Je suis en train de laisser tomber ma base de données et créer une autre par le biais de la ligne de commande. J’ai se connectent via psql - U nom d’utilisateur et puis créer un \connect template1, suivie d’une DROP DATABASE NomBaseDeDonnées ;

J’obtiens l’erreur « base de données databasename est accédée par d’autres utilisateurs ». J’ai apache shutdown et essayé ceci et obtiens toujours cette erreur. J’ai fais quelque chose de mal ?

Merci

488voto

csano Points 7039

Vous pouvez exécuter la commande dropdb depuis la ligne de commande.

Notez que vous devez être un superutilisateur ou le propriétaire de la base de données pour pouvoir le laisser tomber.

Vous pouvez également consulter l’avis de pg_stat_activity pour voir quel type d’activité se déroule actuellement sur votre base de données, y compris tous les processus inactifs.

123voto

Eugene Points 441

71voto

Bohemian Points 134107

Essayez ceci. Remarque Il n’y a aucune base de données spécifiée - il fonctionne simplement « sur le serveur »

Si cela ne fonctionne pas, j’ai vu un problème avec postgres agrippant orphelines instructions préparées.
Pour les nettoyer, procédez comme suit :

puis pour chaque id voyez-vous, exécutez ceci :

17voto

Scott Marlowe Points 2231

Quand il dit des utilisateurs sont connectés, ce qui ne la requête "select * from pg_stat_activity;" dire? Sont les autres utilisateurs en plus de vous-même maintenant connecté? Si oui, vous pourriez avoir à modifier votre pg_hba.fichier conf de rejeter les connexions à partir d'autres utilisateurs, ou arrêter n'importe quelle app pour accéder à l'pg base de données pour être en mesure de la faire tomber. J'ai ce problème à l'occasion de la production. Jeu de pg_hba.conf pour avoir deux lignes comme ceci:

local   all         all                               ident
host    all         all         127.0.0.1/32          reject

et dire pgsql pour recharger ou de redémarrer (c'est à dire soit sudo /etc/init.d/postgresql de recharger ou de pg_ctl reload) et maintenant, la seule façon de se connecter à votre machine via les sockets. Je suis en supposant que vous êtes sur linux. Si non, cela peut nécessiter d'être modifié pour quelque chose d'autre que local / ident sur cette première ligne, à quelque chose comme hôte ... nomutilisateur.

Maintenant, vous devriez être en mesure de le faire:

psql postgres
drop database mydatabase;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X