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

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

3个回答

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

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

qq_38759302
白首方悔读书迟 谢谢加锁后死锁情况消失了,不过暂时没完全理解这个原理
大约 2 年之前 回复

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

qq_38759302
白首方悔读书迟 这个问题我也考虑到了 加了问题依旧,把查找放在startrans之内的目的就是为了防止当前用户读取到之后其它用户重复读取所以不能放在外面
大约 2 年之前 回复

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



qq_38759302
白首方悔读书迟 这个问题我也考虑到了 加了问题依旧
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐