You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DBeaver中PostgreSQL表编辑锁定问题求助

PostgreSQL表锁定解除方案

用户遇到的锁定状态:
dbeaver lock image

问题:无法删除或修改PostgreSQL数据库中的表数据行,已尝试刷新连接、重新连接数据库,但表仍处于锁定状态,求可行解决方法。


解决步骤:

  • 查询锁定源会话
    执行以下SQL,替换你的表名为被锁定的表名称,找出持有锁的进程:

    SELECT
      t.relname AS table_name,
      l.locktype,
      pg_stat_activity.pid,
      pg_stat_activity.usename,
      pg_stat_activity.query,
      pg_stat_activity.state
    FROM pg_locks l
    JOIN pg_class t ON l.relation = t.oid
    JOIN pg_stat_activity ON l.pid = pg_stat_activity.pid
    WHERE t.relname = '你的表名'
    ORDER BY pg_stat_activity.query_start;
    

    结果里的pid是关键,对应持有锁的会话ID。

  • 终止锁定会话
    拿到pid后,执行命令强制终止该会话,释放表锁:

    SELECT pg_terminate_backend(1234); -- 替换1234为实际查询到的pid
    

    需确保当前用户有超级权限(如postgres用户)才能执行此操作。

  • 清理未提交长事务
    部分锁定来自未提交的长时间事务,查询所有活跃/闲置事务:

    SELECT
      pid,
      usename,
      datname,
      query_start,
      state,
      query
    FROM pg_stat_activity
    WHERE state IN ('idle in transaction', 'active')
    ORDER BY query_start;
    

    找到长时间未结束的事务,可联系对应用户提交/回滚,或直接终止其会话。

  • 检查DBeaver本地事务
    DBeaver可能存在未提交的本地事务,查看底部事务面板,若有活跃事务,手动执行COMMIT或ROLLBACK结束事务,释放锁。

  • 重启PostgreSQL服务(终极方案)
    若以上方法均无效,且业务允许,可重启PostgreSQL服务强制释放所有锁。注意:此操作会中断所有会话,需提前协调业务时间。


内容的提问来源于stack exchange,提问作者manick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 14:31:03