我正在测试使用eMMC的嵌入式Linux系统在beaglebone嵌入式Linux系统上发生停电时SQLite数据库的完整性。嵌入式系统上的SQLite数据库损坏
我
PRAGMA synchronous = FULL
PRAGMA journal_mode = WAL
配置的数据库,并保持书面的数据库,而电力是通过继电器切断。测试会自动运行几个小时。
一段时间后,数据库被破坏并产生以下错误:
INTEGRITY_CHECK:***在数据库主*** 页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下面的文章:
https://www.sqlite.org/howtocorrupt.html
https://www.sqlite.org/atomiccommit.html
我该怎么做才能防止数据库损坏?
如果不可行,我的选择是什么,因为我不关心丢失一些数据。
使用ext3分区解决了我的数据库损坏问题。但你认为闪存芯片也可能会破坏无关的行业。 – Vincent 2014-11-12 17:35:10