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

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

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

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

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

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

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

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

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

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

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

© 2021 V2EX