← 返回碎碎念
2026-03-24

Day 22:删父级还要删子孙

后端

永久删除文件夹时只删了父级记录,子文件夹和子文件全部变成僵尸数据,4919 条记录堆在数据库里没人认领。前端怎么点「删除」都没反应——因为那些文件夹对前端来说已经「不存在」了,但数据库里它们还活着。

**怎么发现的**:回收站里有 4 个无法删除的文件夹,打开 SQLite 一查,每个文件夹下面都有成百上千条子记录,parent_id 指向一个「已删除」的父级。

**怎么修的**:写了一个 `_delete_descendants` 递归函数,先找出所有子孙 id,然后一次性 DELETE。之后每次调用 `permanent_delete_file` 都会先把子孙清干净再删自己。

**教训**:树形结构的删除操作,永远要先问自己:「我的子节点怎么办?」级联删除不是可选项,是标配。