所以我在市场上有一个应用程序。它运行了好几个月了。我已经通过小错误修复更新了两次,并且没有对数据库进行任何更改。
我的一些用户收到以下错误:
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方法时,它显然会崩溃。我很难过为什么会发生这种错误。
我最好的猜测是,用户的手机没有剩余空间,因此可写数据库无法打开,从而导致应用程序崩溃。
有什么想法吗?
答案 0 :(得分:2)
sqlite数据库有版本号。打开数据库时会设置版本号。
例如,如果您使用SQLiteOpenHelper
,则构造函数具有int version
参数。
您收到的错误是因为在用户的设备上有一个设置了版本= 2的旧数据库,但是在您的程序更新中,您正在尝试打开请求版本= 1的旧数据库。这是不允许的。
只需将更新程序的版本设置为2或更多。