2014-11-06 4 views
0

Я тестирую целостность базы данных SQLite, когда происходит перебои с подачей электроэнергии на встроенную систему Linux с бисером, используя eMMC.Повреждение базы данных 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

Что можно сделать, чтобы предотвратить повреждение базы данных?

Если это невозможно, какие у меня варианты, так как я не хочу потерять некоторые данные.

ответ

1

SQLite допускает повреждение при отключении электроэнергии, но только в тех секторах, которые записываются.

Флэш-чип, который вы используете, может повредить множество несвязанных секторов. Это невозможно обнаружить; Невозможно предотвратить потерю данных с помощью этого оборудования.

+1

Использование раздела ext3 позволило решить проблему с повреждением базы данных. Но вы правы, что флеш-чип также может испортить несвязанные сектора. – Vincent

Смежные вопросы