Postgresql 数据库表被锁住如何解锁?

查询被锁住的表

-- 替换 'AppUserApple' 为你的表名(注意大小写,需加引号)
SELECT 
  pg_stat_activity.pid,  -- 进程ID(解锁用)
  pg_stat_activity.usename,  -- 用户名
  pg_stat_activity.datname,  -- 数据库名
  pg_class.relname AS locked_table,  -- 被锁定的表名
  pg_locks.mode,  -- 锁模式
  pg_stat_activity.state,  -- 进程状态
  pg_stat_activity.query  -- 导致锁定的SQL(可选)
FROM pg_locks
JOIN pg_class ON pg_locks.relation = pg_class.oid
JOIN pg_stat_activity ON pg_locks.pid = pg_stat_activity.pid
WHERE 
  pg_class.relname = 'AppUserApple'  -- 目标表名(无需双引号,自动匹配大小写)
  AND pg_stat_activity.wait_event IS NOT NULL;  -- 只显示阻塞的进程

批量解锁

-- 替换 'AppUserApple' 为你的表名,执行后自动批量解锁
SELECT 
  pg_terminate_backend(pg_stat_activity.pid) AS 终止结果, 
  pg_stat_activity.pid AS 被终止进程ID
FROM pg_locks
JOIN pg_class ON pg_locks.relation = pg_class.oid
JOIN pg_stat_activity ON pg_locks.pid = pg_stat_activity.pid
WHERE pg_class.relname = 'AppUserApple';
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容