如标题,可以吗?由于 FireFox 中丑陋的 html 界面,我不小心删除了另一条记录。不好的是这条记录删除的是一个根文件夹,程序会自动级联删除所有内容:(
看看undark。我已经用过了。如果记录未被覆盖,它可以从 SQLite 数据库文件中导出行(删除或未删除)。最新版本在这里。
SQLite-Deleted-Records-Parser 不会提供相同类型的输出,但可能很有用。
还有一些产品,例如 SQLite Forensic Explorer、SQLite Repair、Sqlite Database Recovery 和 SQLiteDoctor。
如果您是开发人员,您可以使用 litereplica 避免再次遇到同样的问题。它为 SQLite 添加了单主复制。
但请记住启用时间点恢复,因为当事务被复制到副本时,像
DROP TABLE
或 DELETE FROM
这样的意外命令也会被复制。通过 PITR,您将能够转到之前的时间点。
或定期使用备份 API。尽管它在每次备份时都会传输整个数据库。
请记住:如果您在事务处于活动状态时复制 SQLite 文件或使用常规备份方法 副本可能会已损坏。
抱歉——不。备份是我所知道的唯一选择。
将来,考虑永远不要发出 DELETE 查询,尤其是从用户可访问的表单中发出(只有数据库管理员才可以这样做)——只需在表中包含一个将记录标记为非活动的字段,然后将其考虑到您在 WHERE 子句中的查询。
不幸的是我也不知道有什么办法。但是,在对 SQLite 数据库文件执行 VACUUM 之前,删除的数据通常不会从技术上删除。也许您仍然可以使用文件上的某种十六进制编辑器恢复一些数据。
也许可以通过十六进制编辑器查看数据。我能找到的唯一信息说元数据已经消失,因此记录不会回来,但数据本身可能仍然存在。这与数据的重要性有很大关系,我怀疑它还没有重要到让你挖出一个十六进制编辑器。
数据并不总是立即从文件中删除。如果文件太多而您又绝望了,您可以对文件使用 UNIX 命令
strings
。这可能会帮助您恢复人类可读数据的各种位和片段,但这将是一个困难且不准确的过程。
如果您不小心删除了 SQLite3 中的记录,这里有一个简单的方法来尝试恢复它们。 SQLite 没有内置的“取消删除”功能,但如果有的话可以使用备份。
Check for Backups:
Look for any recent backups you might have made before the deletion.
Restore from Backup:
If you find a backup, restore your database from that backup. This will bring back the data to the state it was in when the backup was created.
Using WAL mode (if enabled):
If you have Write-Ahead Logging (WAL) mode enabled, there might be a chance to recover deleted data. Check the WAL file (usually named *-wal) for changes made after the deletion.
Third-Party Tools:
There are some third-party tools designed for SQLite database recovery. You can explore these tools, but be cautious and ensure they are trustworthy.
没办法。如果没有有效的备份,您将无法恢复它。