J'essaie de supprimer ma base de données et d'en créer une nouvelle via la ligne de commande.
Je me connecte en utilisant psql -U username
puis fais un \connect template1
, suivi d'un DROP DATABASE databasename;
.
Je reçois l'erreur
les autres utilisateurs accèdent au nom de la base de données de la base de données
J'ai arrêté Apache et réessayé mais j'obtiens toujours cette erreur. Est-ce que je fais quelque chose de mal?
database
postgresql
iman453
la source
la source
dropdb databasename
commande à partir de la ligne de commande?psql -U <user> -c "drop database protodb"
(sans nom de base de données)drop database <dataabase_name>;
N'oubliez pas la virgule.Réponses:
Vous pouvez exécuter la commande dropdb à partir de la ligne de commande:
Notez que vous devez être un superutilisateur ou le propriétaire de la base de données pour pouvoir le supprimer.
Vous pouvez également vérifier la vue 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.
la source
dropuser
commande pour supprimer également l'utilisateur.\l
pour voir toutes les bases de données dont vous disposez.Cela a fonctionné pour moi:
pour postgresql antérieur à 9.2 remplacer
pid
parprocpid
http://blog.gahooa.com/2010/11/03/how-to-force-drop-a-postgresql-database-by-killing-off-connection-processes/
la source
select pg_terminate_backend(pid) from pg_stat_activity where datname='YourDatabase';
column "procpid" does not exist
pour l'instance amazon RDS postgres 9.6Essaye ça. Notez qu'aucune base de données n'est spécifiée - elle s'exécute simplement "sur le serveur"
Si cela ne fonctionne pas, j'ai vu un problème avec les postgres qui s'accrochent aux déclarations préparées orphelines.
Pour les nettoyer, procédez comme suit:
puis pour chaque identifiant que vous voyez, exécutez ceci:
la source
Quand il indique que les utilisateurs sont connectés, qu'est-ce que la requête "select * from pg_stat_activity;" dire? Les autres utilisateurs que vous sont maintenant connectés? Si tel est le cas, vous devrez peut-être modifier votre fichier pg_hba.conf pour rejeter les connexions d'autres utilisateurs, ou fermer l'application qui accède à la base de données pg pour pouvoir la supprimer. J'ai ce problème à l'occasion en production. Définissez pg_hba.conf pour avoir deux lignes comme ceci:
et dites à pgsql de recharger ou de redémarrer (c'est-à-dire soit sudo /etc/init.d/postgresql reload ou pg_ctl reload) et maintenant le seul moyen de se connecter à votre machine est via des sockets locaux. Je suppose que vous êtes sous Linux. Si ce n'est pas le cas, il faudra peut-être l'ajuster à autre chose que local / ident sur cette première ligne, à quelque chose comme host ... yourusername.
Vous devriez maintenant pouvoir faire:
la source