文档章节

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

vshcxl
 vshcxl
发布于 2016/07/13 13:48
字数 286
阅读 1437
收藏 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
粉丝 21
博文 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
【MySQL】How to find out who is locking a table i...

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......

磊神Ray
2012/02/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Bytom资产发行与部署合约教程

比原项目仓库: Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom 发行资产 在比原链上发行资产比较方便快捷,使用节点的dashboard图形界面...

比原链Bytom
13分钟前
0
0
Ext ComboBox 实现下拉多选,全选,反选

Ext ComboBox下拉选中-全选反选逻辑处理 Ext ComboBox 实现下拉多选,全选,反选 方法一: 代码 var me = this;var isMultiSelect = true;//是否设置为下拉多选me.selectValues = [];//保存...

javaART
16分钟前
0
0
Swoole Windows 版(4.2.1)

https://pan.baidu.com/s/1uTm77_cp4kn0_xMgO1DpIw Swoole Windows 版(内部版本,swoole-4.2.1,php-7.1,必须为64位系统,Win7或更高版本)。 解压后,将 $dir/bin 目录,设置到 系统的环境...

老查
19分钟前
0
0
美团点评上市受追捧,成中国第四大互联网企业

从建立到上市,蔚来用了不到4年,拼多多3年,趣头条更是仅用了2年3个月。在这波中概股上市浪潮中,等待了漫长8年的美团点评也终于迎来登陆资本市场的时刻。20日上午,美团创始人兼CEO王兴终于...

Mr_zebra
20分钟前
0
0
Mysql-mybatis批量插入

话不多说直接上代码吧 <insert id="batchSave" >insert into table_name (`name`,age)values<foreach collection="list" index="index" item="item" open="(" separator="," close=......

落叶清风
25分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部