使用mysql 发生诡异的事情。
发布于 7 年前 作者 ipengyo 2841 次浏览 来自 问答

表现

image.png

从日志中发现 ,两个 validate 输出 third_ids 居然不一样 数据居然串了,居然把别的数据给查出来了。。

代码

image.png

使用redis缓存,首先查redis 里面有没有, 如果没有的话 去数据库里面查。

代码是这样的,根据token 解析出来的 login_id 然后去 数据库内查 third_ids 按正常逻辑上来说 只要 login_id相同 那么 third_ids 一定是相同的。 奇怪 我node以pm2 fork 模式跑在线上 请问一下 各位有遇到这种状况吗?

4 回复

标题党。。。。 会不会是脏读幻读什么的 首先拿对应的id直接去数据库里查查看数据有没有问题 然后再排除法吧,先把redis去掉,直接从数据库拿看看。

还有你应该把你上面输出日志地方的代码也贴一下

@imhered 谢谢你的回复,这种事情 不是每次都必现,好像是并发比较高的时候出现。。

image.png

我感觉我找到原因了, 这个变量名称写错了,导致变量提前创建,每次函数调用完成以后 这个 变量不会立即清除 下次调用的时候 会导致使用了下次的decode出来的数据。。

结贴啊,,是我傻 忽略了。。。没有用 语法检查导致的bug···

回到顶部