una - renombrar base de datos postgresql
PostgreSQL-Renombrar base de datos (5)
Necesito cambiar el nombre de la base de datos, pero cuando lo hago en PGAdmin : ALTER DATABASE "databaseName" RENAME TO "databaseNameOld"
me dijo que no puede.
¿Cómo puedo hacerlo?
( Versión 8.3 en Windows XP )
Actualizar
El primer mensaje de error: No puedo porque estaba conectado a él. Así que seleccioné otra base de datos e hice las consultas.
Aparece un segundo mensaje de error que me dice que ha llegado la conexión de usuario. Veo en la pantalla
PGAdmin
que tiene muchosPID
pero están inactivos ... No veo cómo matarlos.
¡Unexist me dijo en un comentario que reinicie la base de datos y funciona! Al reiniciar la base de datos, se eliminó toda la conexión existente y luego me conecté a otra base de datos y pude cambiarle el nombre con mi consulta inicial.
Thx todo.
En lugar de implementar un nuke (reiniciar el servidor), debe intentar cerrar las conexiones que le molestan, ya sea al encontrar de dónde son y cerrar los procesos del cliente o mediante la función pg_cancel_backend()
.
Intenta no citar el nombre de la base de datos:
ALTER DATABASE people RENAME TO customers;
Asegúrese también de que no haya otros clientes conectados a la base de datos en ese momento. Por último, intente publicar el mensaje de error que devuelve para que podamos obtener un poco más de información.
Me acabo de enterar de esto y a continuación es lo que funcionó:
1) pdAdmin
es una de las sesiones. Use psql
en psql
lugar.
2) Detenga los servicios de pgBouncer
y / o del programador en Windows, ya que estos también crean sesiones
Para referencia futura, debería poder:
-- disconnect from the database to be renamed
/c postgres
-- force disconnect all other clients from the database to be renamed
SELECT pg_terminate_backend( pid )
FROM pg_stat_activity
WHERE pid <> pg_backend_pid( )
AND datname = ''name of database'';
-- rename the database (it should now have zero clients)
ALTER DATABASE "name of database" RENAME TO "new name of database";
Tenga en cuenta que la tabla pg_stat_activity
column pid
se denominó como procpid
en versiones anteriores a la 9.2. Entonces, si su versión de PostgreSQL es menor que 9.2, use procpid
lugar de pid
.