MariaDB 数据库事务提交后,发现好多数据不见了

2020-11-04 23:14:05 +08:00
 s609926202
写了一个事务,要保证一致性,要么都成功,要么都回滚。
但是发现在提交事务后,一张表中的好多数据都消失了,比如 t_user 表,提交事务前有 300 条记录,提交后变成 200 条,但实际上事务中并没有删除掉这些数据。

事务大致内容( TP 框架):
```
$db = M();
$db->startTrans();

...一些删除、查询、新增、更新语句...

$db->commit();
return true;
```

事务中包含了对同一个表记录的删除、查询、新增操作,当我移除事务时,一切正常,没有出现丢失数据的情况。所以初步怀疑是事务造成了数据的消失。

请问有什么办法可以定位到问题所在吗?
3447 次点击
所在节点    MySQL
8 条回复
kidlj
2020-11-05 00:20:33 +08:00
相比怀疑 MySQL,TP 或者 MySQL driver,更要首先怀疑自己的代码。
labulaka521
2020-11-05 08:20:22 +08:00
幻觉
wowo243
2020-11-05 08:55:49 +08:00
查代码,代码查不出来查 binlog
s609926202
2020-11-05 09:09:11 +08:00
@kidlj
@labulaka521 移除事务后,bug 不复现;添加事务后,bug 复现。。更加确认了是事务的关系
golden0125
2020-11-05 09:18:06 +08:00
应该判断$db->commit();的返回 而不是直接直接返回 true
CyJaySong
2020-11-05 09:25:03 +08:00
直接就返回 true, 你确定 commit 成功了?
zarte
2020-11-05 09:49:15 +08:00
很多人用的程序遇到问题先排除程序问题,直接查代码找问题可以省很多时间,还不会被嘲讽。
roundgis
2022-12-11 04:46:30 +08:00
先不要懷疑數據庫

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/721853

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX