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 会有等待解锁的连接,这时候如果是程序的连接可以重启程序,当然也可以选择将连接断开。
以上仅个人见解