sqlite - 嵌入式应用程序中的 SQLite“数据库磁盘映像格式错误”错误
问题描述
我正在尝试在使用 MPC5748G(PowerPC 内核)创建的嵌入式系统中使用 SQLite,并具有以下行为。SQLite vfs 是在 ELM Chan FatFS 之上通过 USB MSD 创建的。
SQLite open 函数返回SQLITE_OK
,前 4011 个插入语句正常工作。
但是,在 4011 插入之后,任何命令都将失败并显示SQLITE_CORRUPTED
和err_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 二进制文件存在一些差异。下面的图片显示了差异。
什么可能导致这种情况?
解决方案
推荐阅读
- webos - 将我的 mysql 数据库与我的 tv lg 的 webOS 应用程序链接
- mongodb - 如何将两个单独的 Mongo 聚合组合成一个聚合?
- c - 在 C 程序中使用 shell 命令还是编写将使用某种形式的 C 代码的 shell 脚本更好?
- angular - 如何在 ngStyle 中为特定项目使用 ngFor 索引?
- node.js - 有没有办法在 EJS 中使用本机浏览器函数 fetch?
- linux - 如何将流程执行记录为汇编指令?
- azure - 如何将我的 Azure VM DNS 重定向到我的注册域?
- cakephp - 将禁用的下拉元素添加到 INSERT 语句中
- arduino - ESP32 Guru Meditation 使用 .substring 方法时出错
- javascript - 即使在 JS 中的 .then 方法中更新后,控制台日志也会显示旧值