PostgreSQL – 重命名数据库

我需要重命名数据库,但是当我在PGAdmin : ALTER DATABASE "databaseName" RENAME TO "databaseNameOld"PGAdmin : ALTER DATABASE "databaseName" RENAME TO "databaseNameOld"它告诉我,它不能。

我该怎么做?

WindowsXP版本8.3

更新

  • 第一个错误信息:不能因为我连接到它。 所以我select了其他数据库,并做了查询。

  • 我收到第二个错误消息,告诉我它已经来了用户连接。 我在PGAdmin屏幕上看到,它有很多的PID但它们是无效的…我不知道如何杀死它们。

尝试不要引用数据库名称:

 ALTER DATABASE people RENAME TO customers; 

同时确保当时没有其他客户端连接到数据库。 最后,尝试发布它返回的错误消息,以便我们可以获得更多的信息。

为了将来的参考,你应该能够:

 -- 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"; 

请注意, pg_stat_activitypid在9.2之前的版本中被命名为procpid 。 所以如果你的PostgreSQL版本低于9.2,使用procpid而不是pid

我刚碰到这个,下面是什么工作:

1) pdAdmin是其中一个会话。 改用psql
2)在Windows上停止pgBouncer和/或调度程序服务,因为这些也会创build会话

Unexist告诉我在重新启动数据库,它的作品! 重新启动数据库杀死所有现有的连接,然后我连接到其他数据库,并能够用我的初始查询重命名。

Thx全部。

您应该尝试通过查找来自哪里并closures客户端进程或使用pg_cancel_backend()函数来closures那些打扰您的连接,而不是部署nuke(重新启动服务器)。