我正在尝试重命名我的Redshift集群中的数据库。
您连接到数据库时无法重命名数据库,所以我创建了一个临时数据库,与SQL Workbench重新连接到临时数据库并发出:
ALTER DATABASE olddb RENAME to newdb;
我收到一条错误,指出ERROR:其他用户正在访问数据库“olddb”[SQL State = 55006]
我检查了谁连接,似乎有一些从用户rdsdb到数据库的连接。我假设这是AWS Redshift用于执行维护任务等的服务帐户。
连接此超级用户时,如何重命名数据库?
非常感谢。
您无法更改在初始群集创建期间创建的数据库的名称(或删除!)。我不相信文档中提到这个,但我已经与他们一起确认了。
我们可以更改已创建的数据库名称。
详细步骤如何做
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>';
jdbc:redshift://<cluser-id>.us-east-1.redshift.amazonaws.com:8192/database_name_new
删除数据库databasebasename
这是可能的 - 我刚刚重命名了在初始集群创建期间创建的数据库。