postgre 表被加锁无法解锁问题
感谢作者!
文章来源:
http://blog.csdn.net/zhanghaolpc/article/details/5594576
最近遇到一个很郁闷的问题,在运行npgsql时使用了它的分布式事务(System.Transaction不是DbTransaction),结果发现一旦程序异常后就无法继续对相应的表进行操作了。
调查了一下原来postgre对这个表加了锁,但是无法释放,重启postgre的服务也无济于事,最后还是在浩瀚的文档中发现了一个办法来回滚事务,就OK啦。
具体做法如下:
1.查询锁:
postgre查询锁
SELECT t1.locktype ,t1.granted , t1.mode ,t2.relname,t3.datname,t3.usename,t3.current_query from pg_locks t1
left join pg_class t2 on relation = oid
left join pg_stat_activity t3 on t1.pid = t3.procpid
如果发现返回的结果集中有你无法操作的那个表证明他被加锁了。
2.执行:select * from pg_prepared_xacts
这个视图时当前可用的预备事务的系统视图,会列出在postgre上prepare的所有预备的事务(Transaction)。
3.回滚:ROLLBACK PREPARED gid
(回滚一个处于准备好状态的事务)
上面那些事务肯定包含程序异常后的无法处理的那个预备事务。把Gid换成2中查询结果中的guid就可以回滚这个事务了。
再试试这个表,一切恢复正常!
postgre 表被加锁无法解锁问题相关推荐
- mysql数据库加锁语句_sql语句对数据库表进行加锁和解锁
锁是数据库中的一个非常重要的概念,它主要用于多用户环境下保证数据库完整性和一致性. 我们知道,多个用户能够同时操纵同一个数据库中的数据,会发生数据不一致现象.即如果没有锁定且多个用户同时访问一个数据库 ...
- 如何对行 表 数据库加锁
1 如何锁一个表的某一行 SETTRANSACTIONISOLATIONLEVELREADUNCOMMITTED SELECT*FROMtable ROWLOCK WHERE id =1 2 锁定数据 ...
- 加锁和解锁-ReentrantLock详解-AQS-并发编程(Java)
文章目录 1 AQS 1.1 概念 1.2 两种锁机制 1.3 公平锁和非公平锁 1.3 锁竞争 1.4 条件变量 2 ReentrantLock 2.1 简介 2 加锁 2.1 加锁成功 2.2 加 ...
- Redis实现分布式锁:加锁、解锁、续租和一致
目录 分布式锁及其应用场景 为何需要分布式锁 分布式锁的特性 互斥性 不死锁 一致性 可重入性 支持阻塞和非阻塞: 支持公平锁和非公平锁(可选) 使用原生Redis实现分布式锁 加锁 解锁 续租 如何 ...
- java队列加锁_java并发-----浅析ReentrantLock加锁,解锁过程,公平锁非公平锁,AQS入门,CLH同步队列...
前言 为什么需要去了解AQS,AQS,AbstractQueuedSynchronizer,即队列同步器.它是构建锁或者其他同步组件的基础框架(如ReentrantLock.ReentrantRead ...
- ReentrantLock 公平锁和非公平锁加锁和解锁源码分析(简述)
- title: ReentrantLock 公平锁和非公平锁加锁和解锁源码分析(简述) - date: 2021/8/16 文章目录 一.ReentrantLock 1. 构造函数 二.Reentr ...
- 使用redis的setnx可以非同一线程进行加锁和解锁(附源码)
使用redis的setnx可以非同一线程进行加锁和解锁(附源码) 问题背景 项目搭建 总结 Lyric: 那在终点之前 问题背景 Redisson做分布式锁是目前比较流行的方式,但是在使用的过程中遇到 ...
- MySQL表锁了如何解锁
MySQL表锁了如何解锁 SHOW PROCESSLIST; -- 运行这个条命令,会出现下面截图所示内容,找到 字段 state 值中有waiting的记录,看看是不是自己需要解锁的表 字段 i ...
- UNIX操作系统中加锁和解锁
Unix操作系统加锁和解锁的基本思想是,当某个进程进入临界区,它将持有一个某种类型的锁(UNIX里一般来说是semaphore,Linux里一般是信号量和原子量或者spinlock).当其他进程在该进 ...
最新文章
- P2502 [HAOI2006]旅行
- 利用sql报错帮助进行sql注入
- tpcc-mysql的使用
- Android利用广播实现ViewPager中item之间的数据通信
- 深入剖析js命名空间函数namespace
- Java 动态加载class 并反射调用方法
- node进阶| 解决表单enctype=multipart/form-data 时获取不到Input值的问题
- css 倒三角_【推荐收藏】10 个最佳实践来改良你的 CSS
- [转载] python3.x总复习
- 什么是服务器防护,什么是硬防?什么是软防?
- Tiny6410 初体验
- 知乎Redis的演进之路:从单机到2000万QPS的挑战
- windows鼠标消息
- Scrapy框架爬虫项目:京东商城笔记本电脑信息爬取
- Java精品项目源码第47期房屋租赁管理系统
- PBO(Pixel Buffer Object),将像素数据存储在显存中
- Maben 编译 jenjins配置
- js网页简繁体切换cookie记录状态
- 协和医院(东单院区)就诊流程记录
- [驱动]BL0937
热门文章
- php解析二级json,PHP Json 解析
- 小技巧:Mac下快速锁屏
- ping32终端安全管理系统_通过Ping32工单管理功能使用教程
- internet download manager补丁_NS《古树旋律》推出免费追加乐曲补丁 含五首新曲!...
- Ubuntu系统下如何在不重启的情况下永久修改hostname主机名
- Flex 弹性布局(****************************************************)
- [APEC中小企业峰会2009上]对话:经济适用男 vs 超级豪华男
- 搭建集群负载均衡系统
- springboot与docker整合
- input type=file图片上传时,先预览