Android数据库错误 - getWriteableDatabase

时间:2011-11-22 07:38:40

标签: android sqlite

所以我在市场上有一个应用程序。它运行了好几个月了。我已经通过小错误修复更新了两次,并且没有对数据库进行任何更改。

我的一些用户收到以下错误:

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方法时,它显然会崩溃。我很难过为什么会发生这种错误。

我最好的猜测是,用户的手机没有剩余空间,因此可写数据库无法打开,从而导致应用程序崩溃。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

sqlite数据库有版本号。打开数据库时会设置版本号。

例如,如果您使用SQLiteOpenHelper,则构造函数具有int version参数。

您收到的错误是因为在用户的设备上有一个设置了版本= 2的旧数据库,但是在您的程序更新中,您正在尝试打开请求版本= 1的旧数据库。这是不允许的。

只需将更新程序的版本设置为2或更多。