尝试在Redshift群集中重命名数据库

问题描述 投票:2回答:3

我正在尝试重命名我的Redshift集群中的数据库。

您连接到数据库时无法重命名数据库,所以我创建了一个临时数据库,与SQL Workbench重新连接到临时数据库并发出:

ALTER DATABASE olddb RENAME to newdb;

我收到一条错误,指出ERROR:其他用户正在访问数据库“olddb”[SQL State = 55006]

我检查了谁连接,似乎有一些从用户rdsdb到数据库的连接。我假设这是AWS Redshift用于执行维护任务等的服务帐户。

连接此超级用户时,如何重命名数据库?

非常感谢。

amazon-redshift
3个回答
3
投票

您无法更改在初始群集创建期间创建的数据库的名称(或删除!)。我不相信文档中提到这个,但我已经与他们一起确认了。


3
投票

我们可以更改已创建的数据库名称。

详细步骤如何做

  1. 如果您还没有其他数据库,请连接到旧数据库并创建新数据库。 创建数据库databasebasename 在这个例子中,我将数据库名称称为'newdb'。
  2. 使用连接字符串连接到newdb,jdbc:redshift://.us-east-1.redshift.amazonaws.com:8192 / newdb,使用与超级用户相同的密码和用户名(或上述其他符合条件的用户) 。
  3. 现在您可以更改数据库名称。用所需的数据库名替换'database_name_new'。

alter database old-db-name rename to database_name_new;

如果有任何活动会话,您将不得不杀死它们。要查找活动会话的pid:

从STV_SESSIONS中选择*,其中user_name ='rdsdb';

然后杀死一个会话:

  SELECT 
       pg_terminate_backend(<pid>) 
    FROM 
       pg_stat_activity 
    WHERE 
       -- don't kill my own connection!
       procpid <> pg_backend_pid()
       -- don't kill the connections to other databases
       AND datname = '<old-db-name>';
  1. 完成后,您可以使用连接字符串中的新名称连接回该新数据库

jdbc:redshift://<cluser-id>.us-east-1.redshift.amazonaws.com:8192/database_name_new

  1. 您可以删除临时'newdb'。

删除数据库databasebasename


0
投票

这是可能的 - 我刚刚重命名了在初始集群创建期间创建的数据库。

© www.soinside.com 2019 - 2024. All rights reserved.