SQLite“;“数据库磁盘映像格式不正确”;嵌入式应用程序中的错误
我试图在一个使用MPC5748G(PowerPC内核)创建的嵌入式系统中使用SQLite,其行为如下。 SQLite vfs是通过USB MSD在ELM Chan FATF之上创建的 SQLite open函数返回SQLite“;“数据库磁盘映像格式不正确”;嵌入式应用程序中的错误,sqlite,embedded,Sqlite,Embedded,我试图在一个使用MPC5748G(PowerPC内核)创建的嵌入式系统中使用SQLite,其行为如下。 SQLite vfs是通过USB MSD在ELM Chan FATF之上创建的 SQLite open函数返回SQLite_OK,前4011个insert语句工作正常,没有任何问题 但是,在4011插入之后,任何命令都将失败,并导致SQLITE\u损坏和err\u msg=“数据库磁盘映像格式不正确” 我已从中读取信息,并尝试在读取操作之前和写入操作之后使用f_sync,但没有成功 当db加载
SQLite_OK
,前4011个insert语句工作正常,没有任何问题
但是,在4011插入之后,任何命令都将失败,并导致SQLITE\u损坏和err\u msg=“数据库磁盘映像格式不正确”
我已从中读取信息,并尝试在读取操作之前和写入操作之后使用f_sync,但没有成功
当db加载到PC上并且使用了pragma integrity\u check
时,它将返回以下错误:
在数据库主目录中
在树页68单元格0上:无效页码27656608
第100页从未使用过
关于如何找到这个问题的根本原因,有什么提示吗
编辑没有其他可能访问或损坏DB文件的任务
更新:我在Windows环境中模拟了相同的应用程序,使用相同的(经过调整的VFS),并且DB二进制文件中存在一些差异。
下面的图片显示了不同之处
什么原因会导致这种情况?您是否尝试过使用官方的sqlite3.exe
在PC上读取该文件?您是否收到相同的“格式错误的图像”消息?我尝试过使用,但消息是相同的,如果您只执行4000次插入(即,低于您的明显故障点),您是否仍然可以毫无问题地读取PC上的数据库?您是否可以在PC上构建相同的数据库,将其存储在嵌入式系统上并尝试在那里读取。你能信任你的文件系统吗?失败前的插入次数总是相同的,还是取决于插入数据的大小?你有没有一个最简单的例子来重现这种行为?现在你的问题提到了PetitFatFs和FATF。删除错误信息,而不是添加“编辑”注释。任何想知道您编辑的内容的人都可以查看编辑历史记录。