
今天遇到一个很诡异的问题,调试代码的时候发现查到的数据和库中的数据不一样(像是过时的数据,比如一个字符串,部分匹配的上,但是不全),且插入和更新数据都无效,但是直接写 sql 可以正常操作数据库,比如我走了一遍更新状态接口,数据库实际并没有更新数据,但是代码里再查未更新状态的数据,居然查不到之前更新的那条数据了 springcloud + mybatis + mysql
1 yumc 2022-06-17 12:16:30 +08:00 这种问题,大多是使用不正确或不细心。只有贴关键代码才能看出来咯 |
2 newaccount 2022-06-17 13:16:26 +08:00 猜不出来,可能: 1. 执行到断点的时候 session 还没提交? 2. 试试关掉 mybatis 一级二级缓存? |
3 devswork 2022-06-17 13:31:33 +08:00 我感觉就是你数据库工具里连接的数据库 和 spring 项目里的数据库连接不是同一个,哈哈哈哈 |
4 xjngbla OP @newaccount #2 谢谢,我试试 |
6 notwaste 2022-06-17 15:29:20 +08:00 会不会是加了事务 方法没执行完就跟去数据库对比了? |
7 Suddoo 2022-06-17 15:54:07 +08:00 via iPhone 一面之辞,说不清 或许服务有多个实例,接受请求的实例运行的代码逻辑和你本地的代码不一样,查出来的数据当然不一样 或许…… |
9 87B3F508 2022-06-17 16:06:51 +08:00 是不是事务设置成 readOnly 了? |
11 tobepro 2022-06-17 16:15:51 +08:00 按照我之前出类似问题的经验。越诡异的问题一般都是因为一些低级问题导致的。好好仔细检查本地配置和服务器配置。肯定能发现问题。 |
12 xwayway 2022-06-17 16:24:48 +08:00 你别 debug 啊,你直接把你服务的 sql 打出来,坑定是你 debug 到真实执行的过程中,数据被某些东西例如楼上提到的 缓存,readonly ,aop 等东西改了 |
13 ohmycorolla 2022-06-17 17:54:10 +08:00 1.是否有缓存 2.你以为对应的是这条数据,其实并不是 |
14 speedofstephen 2022-06-17 18:00:51 +08:00 感觉就是 2 楼说的问题啊。 你开事务了么, 如果开启了, 事务是在方法执行完提交的。 现在我有点生疏了,讲不好。建议百度以下脏读幻读 |
15 Jooooooooo 2022-06-17 18:03:25 +08:00 你是不是 debug 打断了流量, 没跑完. |
16 tianyu94 2022-06-17 22:21:08 +08:00 我最近遇到一个,时序数据库存数据,动态 SQL 插入数据报语法错误,但是把输出的日志复制出来执行却可以。后面发现有特殊的 UTF8 字符(比如 `\u0000`)这种,替换了这种才解决。 |
17 luckyman 2022-06-17 23:01:28 +08:00 via iPhone 让大家猜谜语呢? |
18 panerai 2022-06-18 00:13:52 +08:00 总结一下就是: 1. 事务没处理好 2. 缓存 3. 配置不对,连的不是同一个库 |