【发布时间】:2019-10-06 08:06:57
【问题描述】:
作为标题,可能吗?由于我在 FireFox 中丑陋的 html 界面,我不小心删除了另一条记录。不好的是这个记录删除是程序自动级联删除所有内容的根文件夹:(
【问题讨论】:
标签: sqlite
作为标题,可能吗?由于我在 FireFox 中丑陋的 html 界面,我不小心删除了另一条记录。不好的是这个记录删除是程序自动级联删除所有内容的根文件夹:(
【问题讨论】:
标签: sqlite
看看undark。我已经用过了。如果记录没有被覆盖,它可以从 SQLite db 文件中导出行(删除或不删除)。最新版本here。
SQLite-Deleted-Records-Parser 不会提供相同类型的输出,但很有用。
还有一些产品,如SQLite Forensic Explorer、SQLite Repair、Sqlite Database Recovery 和SQLiteDoctor。
如果您是开发人员,您可以使用litereplica 避免再次遇到同样的问题。它将单主复制添加到 SQLite。
但请记住启用时间点恢复,因为当事务被复制到副本时,DROP TABLE 或 DELETE FROM 之类的意外命令也会被复制。使用 PITR,您将能够转到之前的时间点。
或定期使用Backup API。虽然它会在每次备份时传输整个数据库。
请记住:如果您在事务处于活动状态时复制 SQLite 文件或使用常规备份方法 副本可以是corrupted。
【讨论】:
undark(两个分支)和 SQL-Deleted-Records-Parser 不适用于最新的 SQLite 版本。
对不起——不。备份是我所知道的唯一选择。
以后,请考虑永远不要发出 DELETE 查询,尤其是从用户可访问的表单(如果有人的话,只让数据库管理员执行)——只需在表中包含一个将记录标记为非活动的字段,然后将其考虑在内在 WHERE 子句中加入您的查询。
【讨论】:
很遗憾,我也不知道有什么办法。但是,在您对 SQLite 数据库文件执行 VACUUM 之前,通常不会从技术上删除已删除的数据。也许您仍然可以在文件上使用某种十六进制编辑器来恢复一些数据。
【讨论】:
也许可以通过十六进制编辑器进入并查看数据。我能找到的唯一信息是元数据已经消失,所以记录不会回来,但数据本身可能仍然存在。这与数据的重要性有很大关系,我怀疑它还不够重要,您可以挖出一个十六进制编辑器。
【讨论】:
数据并不总是立即从文件中删除。如果它有很多并且你很绝望,你可以在文件上使用 UNIX 命令strings。这可能会帮助您恢复各种人类可读数据的点点滴滴,但这将是一个艰难且不准确的过程。
【讨论】:
没办法。如果没有有效的备份,您将无法恢复它。
【讨论】: