mysql 表不能查询数据库_django mysql 查询不出数据表中的新数据(数据库事务)

背景:实际django项目中遇到这样一个问题,两个进程A,B去读写MySQL数据库,A 在insert m 完成后通过redis 通知B去读MySQL。如下图所示,在进程B允许过程中,往数据库多插入几十条数据后,进程B依然查询不到。如下图所示:实际数据表中有6250,但是在进程中查询只有6218条,他对进程启动动新增的数据都查询不到。

6215e57ad12996f18bc50d651f2bb9da.png

问题:A insert完成后,这时B并不能查询到新增的记录m。但是通过其他客户端工具可以看到新增的m记录,特别的是B进程在重启后也能看到记录m。

当然更有意思的是这种现象在开发环境中并不会出现,只在测试环境中会有该问题。

分析1:由于项目使用的django技术,对MySQL查询和插入操作也是django封装进行,加上数据库确实存在该记录。所以怀疑是django没有去真实查询数据库。

排查过程1:到底有没有真实去查数据库?由于该问题是可以复现的,所有使用python manage.py shell 进来一步步去查。

第一,tcpdump 抓包可以搞定,第二,如果是测试开发环境,可以把MySQL 查询日志 的打开,通过日志去看是否进行查询动作。

这里使用方法1,在进程B的机器上执行 tcpdump port 3306, 如果想通过wireshrk 查看详细信息可以使用:tcpdump -w  mysql.pca

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值