• 技术文章 >数据库 >mysql教程

    java-mysql 死锁 Deadlock found when trying to get lock; try restarting transaction

    2016-06-06 09:44:55原创3186
    mysqljava死锁sqltransaction

    语言:java 数据库:mysql 5.0 数据引擎:innodb

    项目中遇到一个mysql死锁的问题,报的异常如下 :com.mysql.jdbc.exceptions.MySQLTransactionRollbackException: Deadlock found when trying to get lock; try restarting transaction

    我把问题简单化一下:

    表t有id,a,b,c四个整型字段,id是primary key,a是unique key

    5个Thread同时进行如下相同的5条sql操作,每个Thread这5条sql在同一个事物中

    insert into t(a,b,c) values(1,1,1) on duplicate key update b=b+VALUES(b)
    insert into t(a,b,c) values(2,2,2) on duplicate key update b=b+VALUES(b)
    insert into t(a,b,c) values(3,3,3) on duplicate key update b=b+VALUES(b)
    insert into t(a,b,c) values(4,4,4) on duplicate key update b=b+VALUES(b)
    insert into t(a,b,c) values(5,5,5) on duplicate key update b=b+VALUES(b)

    这时执行就会报以上那个数据库异常。

    查了些资料,大概了解是因为多个事物对同一条数据进行操作时,发生了锁的冲突。但是好的解决方案没有找到。

    各位大神,帮忙看下,看有什么解决方案或思路,不胜感激!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    上一篇:mysql-MYSQL游标REPEAT循环后,无法得到字符串返回值。望指教,谢谢! 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • MySQL学习之聊聊查询语句执行流程• mysql数据库的超级管理员名称是什么• hive和mysql的区别有哪些• mysql怎么连接数据库• mysql事务隔离级别有哪些
    1/1

    PHP中文网