文档章节

mysql 死锁 Deadlock found when trying to get lock; t

vshcxl
 vshcxl
发布于 2016/07/13 13:48
字数 286
阅读 1926
收藏 0

Deadlock found when trying to get lock; try restarting transaction

 

1213 - Deadlock found when trying to get lock; try restarting transaction
出现这个原因要记住一点就是:innodb的行锁 和解锁都是针对主键索引的。如果查询时根据索引锁表,但更新时却不是通过主键更新,
那么等待的解锁查询的进程将会报1213错误,程序里有可能返回一个null值
实例:
table 
soldgoods (表名)
soldgoodsID 索引
productid   
businessid 

开启线程A
执行:
set autocommit=0;
select businessid from soldgoods where soldgoodsID = 'ac63837c76222e4a5419e2529d775ae4' for UPDATE;
查询得过结果

开启线程B
执行:
set autocommit=0;
select businessid from soldgoods where soldgoodsID = 'ac63837c76222e4a5419e2529d775ae4' for UPDATE;
查询等待解锁

这个时候在线程A中执行:
update soldgoods set productid = 2 where businessid = '0a527df4763c3dc71cbafebec5a8d787'
不是根据主键而去更新锁表的值

线程B会出现:
[Err] 1213 - Deadlock found when trying to get lock; try restarting transaction

如果将最后线程A中执行的语句改变:
update soldgoods set productid = 2 where soldgoodsID = 'ac63837c76222e4a5419e2529d775ae4'
根据索引修改值
然后
commit;
提交事务。线程B就能顺利得到查询值了

 

转载自:http://blog.sina.com.cn/s/blog_4acbd39c01014gsq.html

本文转载自:http://hehaibo.iteye.com/blog/1868075

共有 人打赏支持
vshcxl
粉丝 22
博文 283
码字总数 34755
作品 0
浦东
高级程序员
私信 提问
MySQL 出现死锁的分析和解决方案

异常日志 ### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transactio......

黄途文
2015/07/16
0
3
MySQL死锁分析

熟悉或者了解数据库的朋友都知道锁的概念,这里不做过多的解析!锁的种类有很多,不同数据库的锁管理方式也不同。这里主要谈下MySQL innodb引擎下的死锁。 死锁通俗的来讲就是2个事务相互请求...

rewiner22
2017/02/06
0
0
集群下acquireNextTrigger报死锁异常

org.quartz.JobPersistenceException: Couldn't acquire next trigger: Deadlock found when trying to get lock; try restarting transaction at org.quartz.impl.jdbcjobstore.JobStoreSup......

piaoling19
2016/04/03
416
1
jfinal并发的事务死锁问题

@jfinal 有一个controller,请求方法test,test加了事务@Before(TxSerializable.class) 有TableA,字段count public class TableA extends Model { } 部署一个tomcat,测试500个并发,60秒,...

jeffw
2015/02/06
989
2
How to find out who is locking a table in MySQL

MySQL is adding more tools to monitor its internals with every new release, but one thing it still lacks is a way to find out who is locking what, and therefore which transactio......

诚愚
2014/06/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

安卓的切图规范

Android UI 切图命名规范、标注规范及单位描述 很多UI设计师做APP切图都会有两套,一套是Android的,一套是IOS的。IOS我这边暂不作讲解,因为我本人也不是开发IOS。这里整理一下我在Android...

mo311
32分钟前
2
0
深度剖析阿里巴巴对Flink的优化与改进

摘要: 作者 | 阿里巴巴实时计算团队 导读:随着人工智能时代的降临,数据量的爆发,阿里巴巴的商品数据处理就经常需要面对增量和全量两套不同的业务流程问题,所以阿里巴巴就在想:能不能有...

阿里云官方博客
33分钟前
2
0
Dubbo基础介绍

Dubbo是一个常用的分布式服务框架, 它致力于提供高性能、透明化的RPC远程服务方案。 学习Dubbo有助于提高企业级应用的开发效率,以及可通过简单的配置就可以实现负载均衡,提高服务的效率。...

Java搬砖工程师
44分钟前
4
0
VBS 自动登陆

1.关于网页元素属性 IE浏览器打开网页时,有很多元素,比如说一个文本框,一个按键等。每个元素都会有对应的“name”、“ID”,“style”,“class”等属性。 其中的“ID”和“name”属性是我...

宝贝女儿
49分钟前
1
0
GO 文件相关操作

package mainimport("fmt""os""bufio""io""io/ioutil")type ChartCount struct{Chct intSpacect intNumberct intOtherct int}func main() {file,err := os.Open......

汤汤圆圆
50分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部