首页 > 解决方案 > 嵌入式应用程序中的 SQLite“数据库磁盘映像格式错误”错误

问题描述

我正在尝试在使用 MPC5748G(PowerPC 内核)创建的嵌入式系统中使用 SQLite,并具有以下行为。SQLite vfs 是在 ELM Chan FatFS 之上通过 USB MSD 创建的。

SQLite open 函数返回SQLITE_OK,前 4011 个插入语句正常工作。

但是,在 4011 插入之后,任何命令都将失败并显示SQLITE_CORRUPTEDerr_msg = "database disk image is malformed"

我已经阅读了来自https://www.sqlite.org/lockingv3.html#how_to_corrupt的信息,并尝试在读写操作之前和之后使用 f_sync 但没有成功。

当db在PC上加载并pragma integrity_check使用时,会返回这个错误:
in database main On tree page 68 cell 0: invalid page number 27656608 Page 100 is never used

有关如何找到此问题的根本原因的任何提示?

编辑没有其他可能访问或损坏数据库文件的任务。

更新:我在 Windows 环境中模拟了相同的应用程序,具有相同的(改编的 VFS),并且 DB 二进制文件存在一些差异。下面的图片显示了差异。

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

什么可能导致这种情况?

标签: sqliteembedded

解决方案


推荐阅读