2011-11-22 5 views
2

Итак, у меня есть приложение на рынке. Он работает отлично в течение нескольких месяцев. Я обновил его дважды с небольшими исправлениями ошибок и не делал никаких изменений в базе данных, что так было.Ошибка базы данных Android - getWriteableDatabase

Некоторые из моих пользователей получают следующее сообщение об ошибке:

android.util.Log$TerribleFailure: Can t downgrade read-only database from version 2 to 1: /data/data/myapp/databases/MyAppDB 
at android.util.Log.wtf(Log.java:275) 
at android.util.Log.wtf(Log.java:254) 
at android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:129) 

Как я уже говорил, не было никаких изменений в базу данных, если какой-либо из обновлений. Это явно сбой при вызове метода getWriteableDatabase. Я в тупике, почему эта ошибка происходит.

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

Любые идеи?

ответ

2

База данных sqlite имеет номер версии. Номер версии устанавливается при открытии базы данных.

Например, если вы используете SQLiteOpenHelper, конструктор имеет параметр int version.

Ошибка, с которой вы столкнулись, потому что на устройстве пользователя установлена ​​старая база данных с установленной версией = 2, но при обновлении вашей программы вы пытаетесь открыть эту старую базу данных с запросом версии = 1. Это не разрешено.

Просто установите версию обновленной программы на 2 или более.

+2

Что я не понимаю, так это то, как версия изменилась до версии 2. Я установил исходную версию на 1 и никогда не менял ее на 2. Так как это вообще возможно? И это происходит только с несколькими пользователями, а не со всеми, кто скачал обновление. – Richard

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