- 主题:mysql的怪事: 先读数据,根据读的结果再写,结果读出的结果是
一个字段 status,根据业务逻辑进行状态变换。 比如,0变成1, 1变成2 , 。。。。
第一次进行状态变换, 0->1 从未出过问题
第二次进行状态变换, 先从mysql读出status, 按理应该是1, 数据库里看到的也是1,但是死活读出来是2,这时我的程序就报错了。可是按程序的顺序我还没有做执行状态变换逻辑啊。怎么就很稳定的读出我未来要更新的结果啊
我又做了个实验,因为这些数字都是用宏记录的,所以我把2改成其他比如92, 结果很稳定的读出92,
请大侠们帮忙啊
--
FROM 124.204.53.*
代码哪里写错了,我猜是宏
--
FROM 153.99.133.*
上代码,删减到能复现问题的最小demo
【 在 alextooter 的大作中提到: 】
: 代码哪里写错了,我猜是宏--
来自 VTR-AL00
--
FROM 1.80.155.*
sql写错了吧
有宏,c语言?
--
FROM 111.197.20.*
我现在找事务并发有没有问题
【 在 alextooter (来了) 的大作中提到: 】
: 代码哪里写错了,我猜是宏
--
FROM 124.202.186.*
把每条执行的实际sql log下来就知道了
【 在 wst (wst) 的大作中提到: 】
: 一个字段 status,根据业务逻辑进行状态变换。 比如,0变成1, 1变成2 , 。。。。
:
: 第一次进行状态变换, 0->1 从未出过问题
: 第二次进行状态变换, 先从mysql读出status, 按理应该是1, 数据库里看到的也是1,但是死活读出来是2,这时我的程序就报错了。可是按程序的顺序我还没有做执行状态变换逻辑啊。怎么就很稳定的读出我未来要更新的结果啊
--
FROM 221.222.20.*
debug也不会吗
【 在 wst 的大作中提到: 】
: 一个字段 status,根据业务逻辑进行状态变换。 比如,0变成1, 1变成2 , 。。。。
:
: 第一次进行状态变换, 0->1 从未出过问题
: ....................
- 来自「最水木 for iPad13,4」
--
FROM 73.15.3.*
不支持单步debug, 已经做了个各种日志分析。
刚刚改成select for update,还是有问题
现在在查事务逻辑是否有问题。
【 在 calism (calism) 的大作中提到: 】
: debug也不会吗
: - 来自「最水木 for iPad13,4」
--
FROM 124.202.186.*
找到原因了,事务嵌套导致的错误
【 在 calism (calism) 的大作中提到: 】
: debug也不会吗
: - 来自「最水木 for iPad13,4」
--
FROM 124.202.186.*