如何调试SQLiteError(11)的原因:数据库损坏

时间:2017-09-12 15:13:15

标签: database sqlite debugging corruption

我的任务是找到我们在Beta环境中约5%的日志中找到的2条重复行的原因(此应用程序尚未生效)。它们如下:

  

SQLite错误(11):[cf538e2783]第55472行的数据库损坏

     

SQLite错误(11):[cf538e2783]第55514行的数据库损坏

就是这样。没有其他信息可用,它总是那两行。它们由System.Data.SQLiteLog.LogEventHandler记录,日志系统为Trace

有趣的是,似乎数据库继续运行,我们的应用程序的使用仍在继续,没有任何明显的问题。

所以我的问题是:实际上是否存在问题,如果是的话,您如何识别?

在我对这个问题的研究中,我必须相信这里存在一个合理的问题。根据{{​​3}} SQLite中的腐败应该是相当罕见的。由于数据库缩减(8.1),可能会导致错误的损坏报告,但我认为这不是这种情况。我必须假设报告是正确的,数据库实际上已损坏。

但是,如果数据库实际上已损坏,数据库如何继续正常运行数小时?

许多网站都提供www.sqlite.org如何解决此问题(通过还原到备份或以其他方式重新创建数据库),但我需要找到导致此问题的原因。

我已经尝试为SQLite安装数据库浏览器并浏览数据库,但一切似乎都很好,并且似乎没有办法“浏览”到报告为损坏的行。 (必须有办法这样做,但是,如果不可能知道这些行号是什么,他们为什么会给出行号?)

在这种情况下,我可以调查是否存在可能成为罪魁祸首的行动或领域?如何识别错误消息中引用的行?

0 个答案:

没有答案