【发布时间】:2014-11-06 20:22:05
【问题描述】:
当使用 eMMC 的 beaglebone 嵌入式 Linux 系统发生断电时,我正在测试 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
如何防止数据库损坏?
如果不可行,我有什么选择,因为我不在乎丢失一些数据。
【问题讨论】:
标签: c sqlite embedded-linux beagleboard beagleboneblack