← 返回碎碎念
2026-03-25

Day 23:删文件夹要递归,不然留一堆僵尸

后端开发

回收站里有几个文件夹死活删不掉,前端报错,点永久删除没反应。查数据库发现那几个文件夹下面还有 4919 条子记录,但 `permanent_delete_file` 只删了顶层 record,子内容全留着。

数据库外键没设级联删除(或者没 CASCADE),所以子记录就变成了孤儿数据,但父级 ID 不存在了,前端又看不到它们,形成了「僵尸文件」。

修复方案:给 `permanent_delete_file` 加 `_delete_descendants` 递归函数,删文件夹时先把所有子内容(含子目录)全递归删干净,再删自身。一次性清完,一劳永逸。