C embbed系统上的SQLite数据库损坏

C embbed系统上的SQLite数据库损坏,c,sqlite,embedded-linux,beagleboard,beagleboneblack,C,Sqlite,Embedded Linux,Beagleboard,Beagleboneblack,在使用eMMC的beaglebone嵌入式Linux系统上发生断电时,我正在测试SQLite数据库的完整性 我将数据库配置为 PRAGMA synchronous = FULL PRAGMA journal_mode = WAL 当继电器切断电源时,继续在数据库中写入数据。测试会自动运行几个小时 一段时间后,数据库会损坏,并出现以下错误: 完整性检查:**在数据库主目录中*** 第50861页:btreeInitPage()返回错误代码11 在树页面50820单元格83上:子页面深度不同 第5

在使用eMMC的beaglebone嵌入式Linux系统上发生断电时,我正在测试SQLite数据库的完整性

我将数据库配置为

PRAGMA synchronous = FULL
PRAGMA journal_mode = WAL
当继电器切断电源时,继续在数据库中写入数据。测试会自动运行几个小时

一段时间后,数据库会损坏,并出现以下错误:

完整性检查:**在数据库主目录中*** 第50861页:btreeInitPage()返回错误代码11 在树页面50820单元格83上:子页面深度不同 第50862页:btreeInitPage()返回错误代码11 第50863页:btreeInitPage()返回错误代码11 第50864页:btreeInitPage()返回错误代码11 第50865页:btreeInitPage()返回错误代码11 第50866页:btreeInitPage()返回错误代码11 第50867页:btreeInitPage()返回错误代码11 第50868页:btreeInitPage()返回错误代码11 第50869页:btreeInitPage()返回错误代码11 第50870页:btreeInitPage()返回错误代码11 第50871页:btreeInitPage()返回错误代码11 第50872页:btreeInitPage()返回错误代码11 第50873页:btreeInitPage()返回错误代码11 在树页面50820单元格96上:子页面深度不同

我已经阅读了以下关于SQLite的文章:

如何防止数据库损坏


如果不可行,我的选择是什么,因为我不在乎丢失一些数据。

SQLite允许在断电期间发生损坏,但仅在正在写入的扇区中

你使用的闪存芯片可能会损坏许多不相关的扇区。
这是不可能发现的;使用此硬件无法防止数据丢失。

使用ext3分区解决了我的数据库损坏问题。但你的观点是对的,闪存芯片也会破坏不相关的部门。