qq_38759302
白首方悔读书迟
采纳率60%
2018-04-28 00:20 阅读 1.2k
已采纳

thinkphp5下mysql事物隔离级别SERIALIZABLE 出现死锁

20

错误出错提示和数据库以及代码都在下面。
图片说明
图片说明
图片说明
图片说明
我测试的方法是200个进程同一时刻访问

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • 已采纳
    feelcycle_07 默默悟问 2018-04-28 10:29

    好像得额外加锁,参看:http://www.thinkphp.cn/topic/9964.html

    另外你这只是一种写的情况,应该也有写zt为0的写把,你这样的死锁应该是和另外写zt为0的冲突吧,那里也要保证事务开始和结束,以及加锁。

    点赞 评论 复制链接分享
  • feelcycle_07 默默悟问 2018-04-28 01:44

    一般来说startTrans应该跟随commit或者rollback结束,但是你那在if($data!=null)之外的情况没有,加一下为好。
    或者把查找放在startTrans外,只有if($data!=null)才做startTrans操作。

    点赞 评论 复制链接分享
  • goln goln_cn 2018-04-28 02:43

    启动了一个事务就应该commit或rollback. if里面做了commit,if之外的情况没有做处理

    
    
    
    
    点赞 评论 复制链接分享

相关推荐