我尝试过以下命令作为postgres(超级)用户和所有者用户:
Drop index <index_name>;
Drop index <index_name> cascade;
Drop index concurrently <index_name>;
查询不会给出任何错误,但会一直处于挂起状态,直到被取消。
答案 0 :(得分:4)
您的陈述一般都可以。还有其他进程在索引上有锁定,阻止了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;