GORM 使用事务查找不到数据not found

问题描述

问题流程

//1 任务执行过程中,使用全局的数据库连接对象global.GVA_DB生成了事务
tx:=global.GVA_DB.Begin()

//2 往下执行,调用了另一个函数去创建用户,里面用的是global.GVA_DB创建的用户
CreateUser()
//...

//3 此时使用事务去查找这条数据,查找不到
tx.Where(xxxxx).First(&findUser)

问题分析

在debug这个问题时,我把打印出来的sql语句在数据库执行是可以找到数据的。我就把tx.Where(xxxxx).First(&findUser)改为了global.GVA_DB.Where(xxxxx).First(&findUser),居然解决了。
但是,尝试写个测试用例尝试复现故障现象,却怎么都复现不出来,非常奇怪。
反复测试发现,在执行tx.Where(xxxxx).First(&findUser)查询语句后,数据库中的用户表变为只读了,这个现象在测试用例中并没有出现,而替换成global.GVA_DB.Where(xxxxx).First(&findUser)后,没有出现死锁现象。

总结

虽然解决了,但是没有定位到具体问题。发到网上希望能帮到出现同样问题的小伙伴。
如果有查找问题原因的小伙伴欢迎在下方留言!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值