我有一部 Android 手机,上面运行着我制作的数据库系统(通过短信交互,并与云端同步)。主数据库存储在 sqlite 文件中。它已经在手机上顺利运行了大约两年。
最近,大约两周的时间里,我的数据库文件两次丢失了所有数据(一次被替换为 0 长度文件,一次被替换为 1k 空文件)。今天,软件上午删除的临时文件在下午又自行出现了。
这种现象是不是由于闪存衰退造成的,也就是说,手机是不是已经老化了?
答案1
那当然能是 NAND 写入失败的结果,是的。是否可以尝试将数据库移动到新存储,例如 SD 卡?虽然大多数此类卡在写入相同量时会比内部存储磨损得更快,但当它是唯一向 SD 写入大量内容的东西时,它可能会持续更长时间。
当然,如果设备内存是失败,您可能无论如何都需要更换新设备。错误通常出现在写入时,因此仅运行程序和读取现有文件可能会继续工作,但您创建或修改的每个文件也会写入文件系统元数据(并且,由于 NAND 写入的工作方式,这将影响多个文件的文件系统条目)。元数据损坏将使操作系统无法找到或正确读取其他文件。