This topic created in 2675 days ago, the information mentioned may be changed or developed.
升级用的 python 里面的 mysql 原生写的
数据库有 3 个状态 0 1 2 ,原状态为 0
第一个 sql 升级状态把 0 升级为 1(处理中)
之后写了一个事物
处理成功后把数据库状态升级为 2 失败则升级数据库为 0 (都同时升级其他字段)
运行有的时候网络波动 会出现处理完成后状态为 1 并且事物所处理的字段也填充上了,这是什么鬼
3 replies • 2019-02-15 18:14:48 +08:00
 |
|
1
mayorbryant Feb 15, 2019 1
感觉楼主描述的有点绕啊,根据我的理解,你这个现象很正常啊,说明回写为 2 的操作并没有执行成功啊, 在你写的事务中应该有这样的伪代码
start transaction done something if done: 回写 2 transaction commit else: 回写 0 transaction rollback
|
 |
|
2
xpresslink Feb 15, 2019 1
处理成功后把数据库状态升级为 2 失败则升级数据库为 0 (都同时升级其他字段)
不太理解你说的,用数据库事务去处理如果失败则回滚到前一个状态,应该是 1 啊,你失败则升级为 0 是什么鬼。
|
 |
|
3
ksedz Feb 15, 2019 1
可能有多线程,或者重复数据导致了覆盖 解决办法是第一个 sql 加个条件,只处理状态为 0 的数据
|