解决postgresql数据库清空表数据一直转圈圈,始终无法删除的问题

本文讨论了在清空数据库数据时可能出现的死锁问题,提供了两种解决方案:暴力破解(重启数据库)和解除法(查看并断开锁定连接)。作者推荐使用解除法,包括查询pg_stat_activity找出锁定连接并使用pg_terminate_backend断开或重启程序来解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.问题:当在清空数据的时候,可能有软件同时去访问这个表的数据,就可能会导致一个死锁问题,这时你使用navicat不仅无法再对这个表进行清空,截断等操作,程序也无法再访问这个表的数据
2.解决方案:
(1)暴力破解方案:重启数据库,这种方案是肯定能解决的,但是重启数据库有风险,数据可能丢失。
(2)解除法:优选,断开死锁即可
执行语句
(一)SELECT * FROM pg_stat_activity WHERE datname=‘数据库名’
查看统计连接的状况
(二)
SELECT * FROM pg_stat_activity WHERE datname=‘数据库名’ and state = ‘lock’;
可以直接定位到被锁定连接。
(三)
select pg_terminate_backend(‘pid’)
将这个连接给杀掉
相当于mysql的kill
(四),杀掉了这个连接也无法重新连接这个表的时候,当你发现即使所有的state都没有lock状态的时候,你会发现wait_event_type 会有等待解锁的连接,这时候如果是程序的连接可以重启程序,当然也可以选择将连接断开。

在这里插入图片描述
以上仅个人见解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值