在psql中重命名数据库

38

有人能帮我在Linux shell中重命名PostgreSQL数据库吗?

ALTER DATABASE name RENAME TO newname

上述语句不被执行


1
CountZero比我先回答了,但是没错,你必须确保在重命名数据库时没有任何人(包括你自己)连接到它。例如,要将数据库“xyz”重命名为“abc”,请连接到默认数据库“posgtres”,然后从那里发出“ALTER DATABASE xyz RENAME TO abc”的命令。 - vladr
5
请将您收到的错误信息粘贴在这里。“不执行”并不足够清楚。 - Milen A. Radev
我假设你知道你需要登录到psql,而不是尝试重命名的同一个数据库? - SamGoody
1
我真是太傻了。我只有一个Postgres数据库,而且在你点击数据库之前,无法运行SQL Workbench;一旦你点击了数据库,就已经连接到它了(鸡生蛋问题)。与微软SQL不同的是,我没有看到明显的断开连接的方法。现在我记得为什么我从来不使用Postgres。即使是基础管理也非常麻烦。 - Brain2000
6个回答

27
这可能是一个非常简单的问题。你是否正在以postgres用户身份运行psql?
例如:
$ sudo -u postgres psql
# alter database FOO rename to BAR;
# \q

21

哪个版本的PostgreSQL?来自8.1文档

ALTER DATABASE name RENAME TO newname;

只有数据库所有者或超级用户可以重命名数据库;非超级用户所有者还必须拥有CREATEDB权限。当前数据库不能被重命名。(如果需要,请连接到另一个数据库。)


11

您可能需要特权才能重命名数据库。只有数据库所有者或超级用户可以执行此操作,拥有者还需要创建db的特权。

另外,您无法重命名当前连接的数据库,您需要连接到其他数据库。


5
这是我的问题,我正在连接我想要重新命名的数据库。 - TimE
3
抱歉,我无法理解。如果我没有连接到该数据库,我如何在数据库上运行命令? - YuraHoy

2

连接到的数据库无法重命名。在更改数据库名称之前,请确保已断开连接。 在PGAdmin中,您只需右键单击数据库本身,转到属性,然后从那里进行重命名。 正如其他人指出的那样,您还可以尝试使用以下命令: ALTER DATABASE(数据库名称)RENAME TO(新数据库名称);


1

断开数据库连接(在 DataGrip 中按下 Ctrl + F2

然后:

$ psql -U postgres
postgres=# ALTER DATABASE db_a RENAME TO db_b;

GL

-12

以下是在PostgreSQL中重命名数据库的步骤:

1)右键单击数据库并选择刷新。
2)再次右键单击并选择属性选项。
3)在属性选项卡下,您可以将名称更改为所需的名称。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接