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

标签 android python sqlite

我正在 Android 手机上运行一个小而关键的应用程序。它使用 sqlite 数据库作为其主要数据存储。经过一年多近乎完美的运行后,几天前由于臭名昭著的“数据库磁盘镜像格式错误”问题,它突然在临界点崩溃。这引起了一些尴尬,因为我有几个小时无法访问系统来修复它。

我知道这种情况应该是 very rare .但我现在正在编写一些代码以更优雅地从这种情况中恢复,因为我不能再发生这种情况(这可能是由于手机的硬件,在这种情况下它现在可能会开始发生更多经常 - 但我再次承受不起崩溃)。

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

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

最佳答案

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

SQLite database files are ordinary disk files. That means that any process can open the file and overwrite it with garbage. There is nothing that the SQLite library can do to defend against this.

如果你往文件中写入垃圾数据,我猜你可以达到你想要的效果

关于android - 我可以故意破坏 sqlite3 数据库进行测试吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26966905/

相关文章:

python - 使用 Pandas 在连续的连续时间间隔中找到最小值

python - 没有名为 osgeo.ogr 的模块

c++ - Sqlite3/C++执行DELETE语句不改变db大小

android - 有没有办法从 SQLite 中提取查询?

android - 存储数据的最佳选择是静态对象数组还是 SQLite 数据库

android - 如何从屏幕上删除 Android 偏好设置

android - 如何停止当前正在执行的命令

android - 如何在 JetPack Navigation 组件中托管 fragment 的 Activity 中调用导航 fragment 函数?

android - RecognizerIntent.ACTION_RECOGNIZE_SPEECH - 在模拟器上找不到处理它的 Activity

python - namedtuple 和 frozen dict 之间的区别