Maison > développement back-end > Golang > Comment supprimer une base de données Postgres à laquelle vous êtes actuellement connecté ?

Comment supprimer une base de données Postgres à laquelle vous êtes actuellement connecté ?

Mary-Kate Olsen
Libérer: 2024-11-19 20:18:03
original
322 Les gens l'ont consulté

How to Drop a Postgres Database You're Currently Connected To?

Suppression d'une base de données connectée dans Postgres

Vous avez rencontré une erreur en essayant de supprimer une base de données à laquelle vous êtes actuellement connecté : "pq : ne peut pas supprimer la base de données actuellement ouverte." Cette erreur provient du comportement attendu dans Postgres, qui interdit de supprimer une base de données avec une connexion active à celle-ci.

Ce comportement est logique car la suppression d'une base de données invalide toutes les connexions ouvertes la référençant. Pour réussir à supprimer une base de données, vous devez vous assurer qu'aucune connexion active n'existe.

Approche recommandée

L'approche recommandée consiste à vous connecter à une autre base de données et à exécuter la commande DROP DATABASE. de cette connexion. Cela garantit que vous n'avez aucune connexion ouverte à la base de données que vous souhaitez supprimer.

Déconnexion forcée des clients

Dans les situations où d'autres clients sont connectés à la base de données vous devez les laisser tomber, vous pouvez les déconnecter de force. Notez que cela nécessite des privilèges de superutilisateur.

Pour les versions PostgreSQL antérieures à 9.2 :

SELECT pg_terminate_backend(procpid) FROM pg_stat_activity WHERE datname = 'mydb';
Copier après la connexion

Pour les versions PostgreSQL 9.2 et supérieures :

SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE datname = 'mydb';
Copier après la connexion

Une fois que tous les clients ont été déconnectés de force, vous pouvez vous connecter à une autre base de données et exécuter à nouveau la commande DROP DATABASE.

Remarque supplémentaire

Dans votre exemple de code spécifique, vous tentez de fermer la connexion après avoir exécuté la commande DROP DATABASE. Cette étape est inutile et peut entraîner un comportement inattendu. Connectez-vous simplement à une autre base de données avant d'exécuter la commande DROP DATABASE et vous fermerez avec succès la connexion à la base de données que vous avez supprimée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal