如何在 PostgreSQL 9.6 中删除索引?

How to drop an index in PostgreSQL 9.6?

我以 postgres(super) 用户和所有者用户的身份尝试了以下命令:

Drop index <index_name>;
Drop index <index_name> cascade;
Drop index concurrently <index_name>;

查询没有给出任何错误,但在取消之前一直处于挂起状态。

你的陈述大体上没有问题。还有其他进程锁定了索引,阻止了 drop 语句的完成。您可以使用

查看活动语句
SELECT * FROM pg_stat_activity;

如有必要,您应该适当地设置log_statement

编辑: pg_locks 将为您提供有关特定锁的信息:

SELECT a.datname,
         c.relname,
         l.transactionid,
         l.mode,
         l.GRANTED,
         a.usename,
         a.query, 
         a.query_start,
         age(now(), a.query_start) AS "age", 
         a.pid 
    FROM  pg_stat_activity a
     JOIN pg_locks         l ON l.pid = a.pid
     JOIN pg_class         c ON c.oid = l.relation
    ORDER BY a.query_start;