感谢作者!

文章来源:

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 表被加锁无法解锁问题相关推荐

  1. mysql数据库加锁语句_sql语句对数据库表进行加锁和解锁

    锁是数据库中的一个非常重要的概念,它主要用于多用户环境下保证数据库完整性和一致性. 我们知道,多个用户能够同时操纵同一个数据库中的数据,会发生数据不一致现象.即如果没有锁定且多个用户同时访问一个数据库 ...

  2. 如何对行 表 数据库加锁

    1 如何锁一个表的某一行 SETTRANSACTIONISOLATIONLEVELREADUNCOMMITTED SELECT*FROMtable ROWLOCK WHERE id =1 2 锁定数据 ...

  3. 加锁和解锁-ReentrantLock详解-AQS-并发编程(Java)

    文章目录 1 AQS 1.1 概念 1.2 两种锁机制 1.3 公平锁和非公平锁 1.3 锁竞争 1.4 条件变量 2 ReentrantLock 2.1 简介 2 加锁 2.1 加锁成功 2.2 加 ...

  4. Redis实现分布式锁:加锁、解锁、续租和一致

    目录 分布式锁及其应用场景 为何需要分布式锁 分布式锁的特性 互斥性 不死锁 一致性 可重入性 支持阻塞和非阻塞: 支持公平锁和非公平锁(可选) 使用原生Redis实现分布式锁 加锁 解锁 续租 如何 ...

  5. java队列加锁_java并发-----浅析ReentrantLock加锁,解锁过程,公平锁非公平锁,AQS入门,CLH同步队列...

    前言 为什么需要去了解AQS,AQS,AbstractQueuedSynchronizer,即队列同步器.它是构建锁或者其他同步组件的基础框架(如ReentrantLock.ReentrantRead ...

  6. ReentrantLock 公平锁和非公平锁加锁和解锁源码分析(简述)

    - title: ReentrantLock 公平锁和非公平锁加锁和解锁源码分析(简述) - date: 2021/8/16 文章目录 一.ReentrantLock 1. 构造函数 二.Reentr ...

  7. 使用redis的setnx可以非同一线程进行加锁和解锁(附源码)

    使用redis的setnx可以非同一线程进行加锁和解锁(附源码) 问题背景 项目搭建 总结 Lyric: 那在终点之前 问题背景 Redisson做分布式锁是目前比较流行的方式,但是在使用的过程中遇到 ...

  8. MySQL表锁了如何解锁

    MySQL表锁了如何解锁 SHOW PROCESSLIST;  -- 运行这个条命令,会出现下面截图所示内容,找到 字段 state  值中有waiting的记录,看看是不是自己需要解锁的表 字段 i ...

  9. UNIX操作系统中加锁和解锁

    Unix操作系统加锁和解锁的基本思想是,当某个进程进入临界区,它将持有一个某种类型的锁(UNIX里一般来说是semaphore,Linux里一般是信号量和原子量或者spinlock).当其他进程在该进 ...

最新文章

  1. P2502 [HAOI2006]旅行
  2. 利用sql报错帮助进行sql注入
  3. tpcc-mysql的使用
  4. Android利用广播实现ViewPager中item之间的数据通信
  5. 深入剖析js命名空间函数namespace
  6. Java 动态加载class 并反射调用方法
  7. node进阶| 解决表单enctype=multipart/form-data 时获取不到Input值的问题
  8. css 倒三角_【推荐收藏】10 个最佳实践来改良你的 CSS
  9. [转载] python3.x总复习
  10. 什么是服务器防护,什么是硬防?什么是软防?
  11. Tiny6410 初体验
  12. 知乎Redis的演进之路:从单机到2000万QPS的挑战
  13. windows鼠标消息
  14. Scrapy框架爬虫项目:京东商城笔记本电脑信息爬取
  15. Java精品项目源码第47期房屋租赁管理系统
  16. PBO(Pixel Buffer Object),将像素数据存储在显存中
  17. Maben 编译 jenjins配置
  18. js网页简繁体切换cookie记录状态
  19. 协和医院(东单院区)就诊流程记录
  20. [驱动]BL0937

热门文章

  1. php解析二级json,PHP Json 解析
  2. 小技巧:Mac下快速锁屏
  3. ping32终端安全管理系统_通过Ping32工单管理功能使用教程
  4. internet download manager补丁_NS《古树旋律》推出免费追加乐曲补丁 含五首新曲!...
  5. Ubuntu系统下如何在不重启的情况下永久修改hostname主机名
  6. Flex 弹性布局(****************************************************)
  7. [APEC中小企业峰会2009上]对话:经济适用男 vs 超级豪华男
  8. 搭建集群负载均衡系统
  9. springboot与docker整合
  10. input type=file图片上传时,先预览