Android 数据库错误 - getWriteableDatabase

标签 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 方法时,它显然会崩溃。我对为什么会发生此错误感到困惑。

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

有什么想法吗?

最佳答案

sqlite 数据库有一个版本号。版本号在您打开数据库时设置。

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

你得到的错误发生是因为在用户的设备上有一个版本为 2 的旧数据库,但是在你的程序更新中你试图打开那个请求版本为 1 的旧数据库。这是不允许的。

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

关于Android 数据库错误 - getWriteableDatabase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8223449/

相关文章:

sql - 使用 group by 和 order by 的 sql 查询问题

android - 撇号前面没有\

sqlite - 在SQLite中排序,排序和创建列

android - 在多个 TextView 中使用时选取框不起作用

android - 在 RecyclerView.setHasFixedSize 上使用 NullPointerException 与 Firestore 聊天时崩溃

c - sqlite3 中的表创建不起作用

python - 接线员不在 Peewee

iOS Sqlite3 SQLITE_ERROR

Android AccountPicker - 找不到处理 Intent 的 Activity

android 禁用 3 个选项卡中的 2 个