PostgreSQL解决锁表

问题出现:

修改表结构时由于网络原因,数据库软件直接未响应,猴急的人必定会结束进程。众所周知,修改表肯定会锁表,所以当再次打开数据库软件,甚至换一个软件打开此表,都无法查询。

解决方法:
  1. 重启数据库。简单粗暴,不多解释,但团队开发不合适(每个人锁了表都重启自行想象)。
  2. 解锁。
1
2
3
4
5
6
7
8
9
10
11
12
-- 查看锁表情况(按需加约束条件)
select
a.locktype,
a.database,
a.pid,
a.mode,
a.relation,
b.relname
from
pg_locks a
join pg_class b on
a.relation = b.oid

1
2
-- 根据pid释放锁
select pg_terminate_backend('pid')

完成解锁。