PG_TERMINATE_BACKEND不会结束特定会话

ale*_*x_i 9 session amazon-redshift

由于连接,我无法删除红移数据库:

Couldn't drop my_db : #<ActiveRecord::StatementInvalid: PG::ObjectInUse: ERROR:  database "my_db" is being accessed by other users
Run Code Online (Sandbox Code Playgroud)

我连接(通过psql)到同一个集群的另一个数据库,并检查以查看我的待处理会话的pid:

my_other_db=# select procpid from pg_stat_activity where datname='my_db';
  procpid 
 ---------
    20457
(1 row)
Run Code Online (Sandbox Code Playgroud)

所以我试图调用PG_TERMINATE_BACKEND:

my_other_db=# select pg_terminate_backend(20457);
 pg_terminate_backend
----------------------
                    1
(1 row)
Run Code Online (Sandbox Code Playgroud)

但是当我检查了我的pg_stat_activity时,我的阻塞会话仍然在这里:

my_other_db=# select procpid from pg_stat_activity where datname='my_db';
  procpid 
 ---------
    20457
(1 row)
Run Code Online (Sandbox Code Playgroud)

我仍然无法放弃我的数据库.

任何的想法 ?(我不得不重新启动群集以摆脱它,这不是一个令人满意的解决方案)

(当然,我尝试了另一个会话,我设法终止了)

Joe*_*ris 0

当您取消查询或终止会话时,Redshift 必须通过恢复已进行的任何更改来将数据库返回到安全状态。这可能需要不同的时间,具体取决于会话正在执行的操作以及影响相同表的任何其他正在进行的查询。