Android - образ диска базы данных уродлив

В моем приложении для Android я получаю "образ диска базы данных, уродливо", Каковы причины получения этой ошибки?

не закрытый дб? несколько потоков, получающих доступ к дб? или андроид просто был поврежден?

Спасибо

android.database.sqlite.SQLiteDatabaseCorruptException: database disk image is malformed
   android.database.sqlite.SQLiteQuery.native_fill_window(Native Method)
   android.database.sqlite.SQLiteQuery.fillWindow(SQLiteQuery.java:75)
   android.database.sqlite.SQLiteCursor.fillWindow(SQLiteCursor.java:288)
   android.database.sqlite.SQLiteCursor.getCount(SQLiteCursor.java:269)
   android.database.AbstractCursor.moveToPosition(AbstractCursor.java:171)
   android.database.AbstractCursor.moveToFirst(AbstractCursor.java:248)
...
15
задан Natali 15 February 2012 в 14:10
поделиться

2 ответа

Ошибка передается из машинного кода в Java, поэтому вам нужно посмотреть возможные причины повреждения SQLite. Вот веб-страница на веб-сайте SQLite, где перечислены ошибки, связанные с ошибками в SQLite, а вот еще одна под названием Как повредить вашу базу данных .

3
ответ дан 1 December 2019 в 04:57
поделиться

Я встречал много случаев, когда люди сообщали о проблемах с повреждением sqlite на Android. В большинстве случаев это связано с убийцей задач, но все еще есть небольшая часть людей, которые все еще испытывают случайное повреждение SQLite.

Например, эта проблема: http://code.google.com/p/android/issues/detail?id=4866

Ссылки JRL выше также очень полезны для понимания того, какие типы событий могут привести к повреждению образа базы данных SQLite.

Кроме того, в последнее время в сам SQLite были внесены исправления для устранения различных (редких) сценариев повреждения данных. См. http://www.sqlite.org/changes.html . Таким образом, версия SQLite, поставляемая с Android, не самая последняя, ​​но по мере развития Android меняются и приложения, связанные с ним, такие как SQLite.

В конце концов, мы, как программисты, можем сделать лишь так много для защиты от повреждения SQLite, поэтому иногда полезно использовать механизмы безопасности в наших приложениях, такие как периодическое резервное копирование БД на SDCard (это то, что я делаю).

4
ответ дан 1 December 2019 в 04:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: