Cómo eliminar la base de datos PostgreSQL a través de la línea de comando [cerrado]

Resuelto iman453 asked hace 13 años • 4 respuestas

Estoy intentando eliminar mi base de datos y crear una nueva a través de la línea de comando. Me conecto usando psql -U usernamey luego hago un \connect template1, seguido de un DROP DATABASE databasename;.

me sale el error

Otros usuarios están accediendo al nombre de la base de datos.

Cerré Apache e intenté esto nuevamente, pero sigo recibiendo este error. ¿Estoy haciendo algo mal?

iman453 avatar Aug 16 '11 11:08 iman453
Aceptado

Puede ejecutar el comando dropdb desde la línea de comando:

dropdb 'database name'

Tenga en cuenta que debe ser superusuario o propietario de la base de datos para poder eliminarla.

También puede consultar la pg_stat_activityvista para ver qué tipo de actividad se está llevando a cabo actualmente en su base de datos, incluidos todos los procesos inactivos.

SELECT * FROM pg_stat_activity WHERE datname='database name';

Tenga en cuenta que a partir de PostgreSQL v13, puede desconectar a los usuarios automáticamente con

DROP DATABASE dbname WITH (FORCE);

o

dropdb -f dbname
csano avatar Aug 16 '2011 05:08 csano

Esto funcionó para mí:

select pg_terminate_backend(pid) from pg_stat_activity where datname='YourDatabase';

para postgresql anterior a 9.2 reemplazar pidconprocpid

DROP DATABASE "YourDatabase";

http://blog.gahooa.com/2010/11/03/how-to-force-drop-a-postgresql-database-by-killing-off-connection-processes/

Eugene avatar Feb 22 '2012 08:02 Eugene

Prueba esto. Tenga en cuenta que no se especifica ninguna base de datos; simplemente se ejecuta "en el servidor"

psql -U postgres -c "drop database databasename"

Si eso no funciona, he visto un problema con Postgres reteniendo declaraciones preparadas huérfanas.
Para limpiarlos, haga esto:

SELECT * FROM pg_prepared_xacts;

luego, para cada identificación que veas, ejecuta esto:

ROLLBACK PREPARED '<id>';
Bohemian avatar Aug 16 '2011 05:08 Bohemian