Pat*_*ins 115 sql postgresql
我需要重命名数据库,但当我在
PGAdmin : ALTER DATABASE "databaseName" RENAME TO "databaseNameOld"
其中时,告诉我它不能.
我该怎么做?
(WindowsXP上的8.3版)
更新
第一条错误消息:不能,因为我连接到它.所以我选择了另一个数据库并进行了查询.
我收到第二条错误消息,告诉我它已经来了用户连接.我在PGAdmin
屏幕上看到它有很多,PID
但它们都处于非活动状态......我不知道如何杀死它们.
bmd*_*cks 173
不要引用数据库名称:
ALTER DATABASE people RENAME TO customers;
Run Code Online (Sandbox Code Playgroud)
还要确保当时没有其他客户端连接到数据库.最后,尝试发布它返回的错误消息,以便我们可以获得更多信息.
gsi*_*ems 79
为了将来参考,您应该能够:
-- 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";
Run Code Online (Sandbox Code Playgroud)
请注意,表pg_stat_activity
列在9.2之前的版本pid
中命名procpid
.因此,如果您的PostgreSQL版本低于9.2,请使用procpid
而不是pid
.