J’essaie de supprimer ma firebase database et d’en créer une nouvelle via la ligne de commande. Je me connecte en utilisant psql -U nom d’utilisateur, puis fais un \ connect template1, suivi d’un nom de firebase database DROP DATABASE;
J’obtiens l’erreur “le nom de la firebase database databasename est accessible par d’autres utilisateurs”. J’ai arrêté Apache et j’ai essayé et j’ai toujours cette erreur. Est-ce que je fais quelque chose de mal?
Vous pouvez exécuter la commande dropdb à partir de la ligne de commande:
dropdb 'database name'
Notez que vous devez être un superutilisateur ou le propriétaire de la firebase database pour pouvoir le déposer.
Vous pouvez également consulter la vue pg_stat_activity pour voir quel type d’activité se déroule actuellement dans votre firebase database, y compris tous les processus inactifs.
SELECT * FROM pg_stat_activity WHERE datname='database name';
Cela a fonctionné pour moi:
select pg_terminate_backend(pid) from pg_stat_activity where datname='YourDatabase';
pour postgresql plus tôt que 9.2 remplacer pid
par procpid
DROP DATABASE "YourDatabase";
Essaye ça. Notez qu’il n’y a pas de firebase database spécifiée – elle s’exécute simplement “sur le serveur”
psql -U postgres -c "drop database databasename"
Si cela ne fonctionne pas, j’ai vu un problème avec postgres sur des déclarations préparées orphelines.
Pour les nettoyer, procédez comme suit:
SELECT * FROM pg_prepared_xacts;
alors pour chaque identifiant que vous voyez, lancez ceci:
ROLLBACK PREPARED '';
Quand il dit que les utilisateurs sont connectés, qu’est-ce que la requête “select * from pg_stat_activity;” dire? Les autres utilisateurs à part vous-même sont-ils maintenant connectés? Si tel est le cas, vous devrez peut-être modifier votre fichier pg_hba.conf pour rejeter les connexions des autres utilisateurs ou arrêter l’application qui accède à la firebase database pg pour pouvoir la supprimer. J’ai ce problème à l’occasion dans la production. Définissez pg_hba.conf comme suit:
local all all ident host all all 127.0.0.1/32 reject
et dire à pgsql de recharger ou de redémarrer (par exemple, sudo /etc/init.d/postgresql reload ou pg_ctl reload) et maintenant, le seul moyen de se connecter à votre machine est via les sockets locaux. Je suppose que vous êtes sur Linux. Si ce n’est pas le cas, il faudra peut-être modifier quelque chose d’autre que local / ident sur cette première ligne, en quelque chose comme host … yourusername.
Maintenant, vous devriez être capable de faire:
psql postgres drop database mydatabase;