当前位置:  开发笔记 > 数据库 > 正文

PostgreSQL - 重命名数据库

如何解决《PostgreSQL-重命名数据库》经验,为你挑选了3个好方法。

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

我该怎么做?

(WindowsXP上的8.3版)

更新

第一条错误消息:不能,因为我连接到它.所以我选择了另一个数据库并进行了查询.

我收到第二条错误消息,告诉我它已经来了用户连接.我在PGAdmin屏幕上看到它有很多,PID但它们都处于非活动状态......我不知道如何杀死它们.

bmdhacks.. 173

不要引用数据库名称:

ALTER DATABASE people RENAME TO customers;

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



1> bmdhacks..:

不要引用数据库名称:

ALTER DATABASE people RENAME TO customers;

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


如果名称中包含大写字母,则需要引用.
情况并非如此,但当名称包含`.`或`@`时也需要引用.
当名称包含`-`时也需要引用

2> gsiems..:

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

-- 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_activity列在9.2之前的版本pid中命名procpid.因此,如果您的PostgreSQL版本低于9.2,请使用procpid而不是pid.


它对我有用,thanx!但是pg_stat_activity中的列名是pid而不是procpid.(`x上的PostgreSQL 9.3.5 x86_64-apple-darwin,由i686-apple-darwin11-llvm-gcc-4.2(GCC)4.2.1编译(基于Apple Inc. build 5658)(LLVM build 2336.9.00),64 -bit`)

3> smoore4..:

我刚碰到这个,下面是有用的:

1)pdAdmin是其中一个会议.请psql改用.
2)pgBouncer在Windows上停止和/或调度程序服务,因为它们也会创建会话

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有