我需要重新命名数据库,在 PGAdmin 中执行 ALTER DATABASE "databaseName" RENAME TO "databaseNameOld" 命令时出现了无法执行的提示。请问该怎么做?(版本为 WindowsXP 上的 8.3)更新:第一个错误消息是因为连接到了该数据库,所以我选择了另一个数据库并执行了查询;第二个错误消息告诉我有一些用户处于连接状态,我在 PGAdmin 屏幕上看到有许多 PID,但它们是不活动的……我不知道如何终止它们。
尽量不要在引用数据库名称时使用引号:
ALTER DATABASE people RENAME TO customers;
同时确保没有其他客户端连接到数据库。最后,尝试发布返回的错误消息,以便我们可以获得更多信息。
.
或 @
时同样需要进行引用。 - omar作为以后参考,你应该能够做到:
-- 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
表中的列 pid
被命名为 procpid
。因此,如果您的 PostgreSQL 版本低于 9.2,请使用 procpid
而不是 pid
。
PostgreSQL 9.3.5 on x86_64-apple-darwin, compiled by i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.9.00), 64-bit
) - 31 bit我刚遇到这个问题,以下是解决方法:
1)pgAdmin
是其中之一会话。使用 psql
代替。
2)停止 Windows 上的 pgBouncer
和/或调度程序服务,因为它们也会创建会话。
Unexist在评论中告诉我重新启动数据库即可解决问题!重新启动数据库将会断开所有现有连接,然后我连接到另一个数据库并成功地使用了最初的查询语句完成了重命名操作。
谢谢大家。
ALTER DATABASE old_database RENAME TO new_database;
old_database 意味着已经存在的数据库。 new_database 意味着需要修改此名称。
Example: ALTER DATABASE profile RENAME TO address;
当通过pgadmin连接时,默认数据库为postgres。
ALTER DATABASE postgres RENAME TO pgnew;
这样做是行不通的。
您需要在pgadmin中右键单击服务器,将Maintenance DB设置为其他数据库并保存。然后重试,如果没有其他连接存在,则应该可以正常工作。
对于使用DBeaver遇到此问题并收到以下错误消息的任何人:
ERROR: database "my_stubborn_db" is being accessed by other users
Detail: There is 1 other session using the database.
断开当前连接,并重新连接到同一服务器,使用不针对你正在更名的数据库的连接。
仅更改活动数据库是不够的。