ver usuarios una postgres por datos databases create crear consultar consola como comandos cambiar básicos database postgresql

database - usuarios - Eliminar la base de datos postgresql a través de la línea de comandos



ver databases postgresql (4)

Estoy tratando de eliminar mi base de datos y crear una nueva a través de la línea de comandos. Inicio de sesión con psql -U nombre de usuario y luego hago una / connect template1, seguida de un databasename DROP DATABASE;

Aparece el error "otros usuarios acceden al nombre de la base de datos de la base de datos". Apagué a Apache e intenté esto y todavía estoy recibiendo este error. ¿Estoy haciendo algo mal?


Cuando dice que los usuarios están conectados, ¿qué hace la consulta "seleccionar * de pg_stat_activity;" ¿decir? ¿Están los otros usuarios además de usted ahora conectados? Si es así, es posible que deba editar su archivo pg_hba.conf para rechazar las conexiones de otros usuarios, o cerrar cualquier aplicación que acceda a la base de datos de pg para poder eliminarla. Tengo este problema en ocasiones en la producción. Establezca pg_hba.conf para que tenga dos líneas como esta:

local all all ident host all all 127.0.0.1/32 reject

y dígale a pgsql que vuelva a cargar o reiniciar (es decir, ya sea sudo /etc/init.d/postgresql reload o pg_ctl reload) y ahora la única forma de conectarse a su máquina es a través de sockets locales. Estoy asumiendo que estás en Linux. Si no es así, es posible que deba ser ajustado a algo que no sea local / ident en esa primera línea, a algo como host ... su nombre de usuario.

Ahora deberías poder hacer:

psql postgres drop database mydatabase;



Prueba esto. Tenga en cuenta que no hay una base de datos especificada, simplemente se ejecuta "en el servidor"

psql -U postgres -c "drop database databasename"

Si eso no funciona, he visto un problema con los postgres en las declaraciones preparadas huérfanas.
Para limpiarlos, haz esto:

SELECT * FROM pg_prepared_xacts;

Entonces para cada ID que veas, ejecuta esto:

ROLLBACK PREPARED ''<id>'';


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

dropdb ''database name''

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

También puede consultar la vista pg_stat_activity para ver qué tipo de actividad se está realizando actualmente en su base de datos, incluidos todos los procesos inactivos.

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