有关恢复损坏的大型SQLite3数据库的任何提示吗?

时间:2017-08-04 21:11:29

标签: sqlite skype corrupt repair

我有一个SQLite 3数据库,它来自“经典”Windows Skype,它存储了所有它的对话历史记录和聊天记录,以前的电话会议/群组聊天等等,都在这个名为“main”的数据库文件中。 D b”。它是标准的SQLite 3,特别是我使用它作为我的主要通信程序,所以这样的事情发生在我身上并不是很理想。 与此同时,我正在使用Windows 10版本,它能够从损坏的数据库中提取我的联系人和最近的聊天记录,以便现在可以使用。

此后它已经腐败,无法阅读。我不确定是什么导致它,但我会随机退出,当我再次尝试重新登录时,我会收到“数据库错误,请重新启动”消息,我应该立即停在那里,但我一直在登录并且最终当我不断地重新登录它之后,它仍然把我踢出去,一切都搞砸了,联系人,聊天记录,一切。 它有大约2年的聊天记录和其他对话历史,我不想放松,我最近没有备份。 Skype本身有一个内置的修复功能,它看起来像以前修复了数据库本身,但是今天当它试图修复数据库时(我后来发现它在每次登录后都运行了,因为我注册了错误消息)它像我上面描述的那样“混乱”。

我联系了他们的支持,他们告诉我main.db SQLite3文件,这是存储所有内容的地方,并且我的必须是腐败的,他们不能再帮我了。某些内容存储在“云”中,但是最多只需要30天的通话,聊天记录和其他所有内容。我无法找回过去的东西(这将在今年夏天开始之前)。

它将最后一个未修复的损坏的数据库文件保留为main.corrupt,所以我接受了它并尝试使用它, 以下是我在各种应用程序中尝试阅读时收到的消息,“数据库图像格式错误”, 当试图做“sqlite3 main.db”PRAGMA integrity_check“” 我收到几条看起来像这样的消息, “Page #####:btreeInitPage()返回错误代码11”

有没有人知道我可以尝试恢复它的任何基本命令等?我也搜索了谷歌,并没有太多运气。有网上的节目声称他们可以像100美元一样修复它,但我不完全确定我想花那么多钱在可能无效的东西上。

我也试过“$ sqlite3 main.corrupt”.dump“| sqlite3 main_repaired.db”,但这也没有取得多大成功。

我自己一直在研究,我不完全确定这些数据库的格式,尽管似乎其他人也在网上记录了这些数据库。甚至有一个名为“Skyperious”的程序,它允许你加载数据库并读取它,但是我只是得到通常的“数据库图像格式错误”,我尝试使用它自己的修复功能,但没有太多运气,我会继续尝试

1 个答案:

答案 0 :(得分:1)

通常,无法保证完全恢复损坏的SQLite3数据库 - 理想情况是从备份副本还原数据库。也就是说,尝试恢复数据的常用技巧是使用" .dump"命令在sqlite3命令行工具中,并使用其输出来创建新的SQLite3数据库。结果将根据原始腐败的性质和程度而有所不同,