Cómo eliminar la base de datos PostgreSQL a través de la línea de comando [cerrado]
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 username
y 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?
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_activity
vista 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
Esto funcionó para mí:
select pg_terminate_backend(pid) from pg_stat_activity where datname='YourDatabase';
para postgresql anterior a 9.2 reemplazar pid
conprocpid
DROP DATABASE "YourDatabase";
http://blog.gahooa.com/2010/11/03/how-to-force-drop-a-postgresql-database-by-killing-off-connection-processes/
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>';