postgre 表被加锁无法解锁问题
来源:互联网 发布:邯郸峰派网络 编辑:程序博客网 时间:2024/04/30 07:48
最近遇到一个很郁闷的问题,在运行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 表被加锁无法解锁问题
- postgre 表被加锁无法解锁问题
- AutoLock 解决加锁后忘记解锁问题
- InnoDB 解锁和加锁(死锁)问题
- 注册表加锁与解锁
- 文件的加锁解锁
- ABAP程序 加锁/解锁
- 自动加锁与解锁
- 加锁解锁PHP实现
- ABAP程序 加锁/解锁
- oracle用户解锁/加锁
- BitLocker解锁之后加锁
- ABAP程序 加锁/解锁
- PHP加锁解锁操作
- ABAP程序 加锁/解锁
- mysql 加锁 解锁 页表行锁
- c++实现加锁解锁
- 加锁解锁PHP实现
- 关于PowerDesigner Reverse Engineer from database-mysql的逆向工程
- Intent Filter匹配
- css:div属性详解
- administrator账户停用的解决方法
- 据说,VIM(编辑器)+GCC(编译器)+GDB(调试器)是Linux下最常用的开发工具链
- postgre 表被加锁无法解锁问题
- hdu 2700 Parity
- Linux基本的键盘输入快捷键和一些常用命令
- 跨平台防止运行多个程序副本代码
- 配置Struts+Hibernate+Spring基本步骤
- [翻译]High Performance JavaScript(003)
- 屠宰行业ERP实施讨论
- pku1887 最长不上升子序列
- TSP问题之基本遗传算法 cpp实现