我可以故意破坏sqlite3数据库进行测试吗?

时间:2014-11-17 06:37:44

标签: android python sqlite

我在Android手机上运行一个小但关键的应用程序。它使用sqlite数据库作为其主要数据存储。经过一年多的近乎无瑕疵的运作,几天前由于臭名昭着的数据库磁盘映像格式错误而突然崩溃了#34;问题。这引起了一些尴尬,因为我无法访问系统来修复它几个小时。

我知道这种情况应该是very rare。但我现在正在编写一些代码,以便更好地从这种情况中恢复,因为我无法承受再次发生这种情况(这可能是由于手机的硬件,其中现在它可能会开始更频繁地发生 - 但我再也不能承受崩溃了。

但是,为了测试我的恢复代码,我需要生成相同的错误,由于一个愚蠢的错误,我丢失了创建问题的数据库副本。

我的问题是 - 我可以对sqlite数据库做些什么会导致"数据库磁盘映像格式错误"错误?然后我可以测试我的恢复代码。

2 个答案:

答案 0 :(得分:2)

SQLite文档有一篇名为How To Corrupt an SQLite Database File

的文章
  

SQLite数据库文件是普通的磁盘文件。这意味着任何   进程可以打开文件并用垃圾覆盖它。有   SQLite库无法阻止这一点。

如果您将垃圾数据写入文件,我想您可以实现您想要的目标

答案 1 :(得分:1)

你可以做到。

  1. 只需将您的工作数据库文件复制到资产中。
  2. 然后,一旦应用程序运行,通过代码逐字节复制数据库文件并在复制时丢弃一些字节,您将得到一个损坏的数据库。
  3. 你也可以尝试别的东西:

    只需创建一个文本文件。然后将其重命名为* .db文件并尝试在android中打开该文件,假设它是一个数据库文件。我希望你能得到同样的例外。

相关问题