PostgreSQL 修改表结构卡住不动
@[]
查找卡住的进程 ID(PID)
-- 查看当前所有数据库连接及进程信息
SELECTpid,usename,query,age(clock_timestamp(), query_start) AS query_duration
FROMpg_stat_activity
WHEREquery LIKE '%ALTER TABLE%'; -- 过滤出正在执行 ALTER TABLE 的语句
今天遇到的一个问题记录一下,因为系统上的一个改动需要同步脚本至测试库上,
具体的脚本内容也很简单,就是修改了某张表的一个字段。
但是无论怎么操作都是一直卡住,
表的数据量很小就十几条数据所以初步怀疑是表被锁了。后经查证确实是被锁住了。
使用语句在navicat 里面进行查询
select * from pg_locks where relation=
(select oid from pg_class where relname='可能锁表了的表');
取消函数和中断函数
--取消后台操作,回滚未提交事物
select pg_cancel_backend(上面查到的pid)
--中断session,回滚未提交事物
select pg_terminate_backend(上面查到的pid)