Java Sqlite-降级
最近我更新了我的android游戏,编辑sqlite数据库,在我的表中添加了新字段,更新后,我收到了4份崩溃报告(其中3份来自同一台设备,三星Galaxy S4) android.database.sqlite.SQLiteException:无法从降级数据库 第2版至第1版 android.database.sqlite.SQLiteOpenHelper.ondownggrade(SQLiteOpenHelper.java:361) 在 android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:255) 在 android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164) 我真的不明白可能的原因是什么,什么时候甚至可以开始降级数据库,而实际上它需要在我的上一个数据库中升级 在更新过程中,我明显地将数据库_版本值从1增加到了2 我没有重写onDowngrade方法,我的onUpgrade如下所示:Java Sqlite-降级,java,android,database,sqlite,Java,Android,Database,Sqlite,最近我更新了我的android游戏,编辑sqlite数据库,在我的表中添加了新字段,更新后,我收到了4份崩溃报告(其中3份来自同一台设备,三星Galaxy S4) android.database.sqlite.SQLiteException:无法从降级数据库 第2版至第1版 android.database.sqlite.SQLiteOpenHelper.ondownggrade(SQLiteOpenHelper.java:361) 在 android.database.sqlite.SQLi
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
{
updateToVersion2(db, oldVersion, newVersion);
}
private void updateToVersion2(SQLiteDatabase db, int oldVersion, int newVersion)
{
if (oldVersion <= 1)
{
ContentValues cv1 = new ContentValues();
cv1.put(FIELD_WORLD_ID, 6);
cv1.put(FIELD_MAX_UNLOCKED, 1);
db.insert(TABLE_LEVELS, null, cv1);
}
}
@覆盖
public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion)
{
更新版本2(db、旧版本、新版本);
}
私有void updateVersion2(SQLiteDatabase db、int-oldVersion、int-newVersion)
{
如果(oldVersion问题在于您没有覆盖onDowngrade
方法。如中所述,您需要这样做,否则您将得到一个异常:
如果未被覆盖,默认实现将拒绝降级并抛出SQLiteException
这很奇怪,所以现在我想知道为什么这种情况很少发生?我的游戏已经被下载了大约250万次,而且像这样的问题也很少发生。答案是,你能告诉我,我应该在重写后将这个方法留空吗?也许是三星实现中的一个bug,在不应该的时候调用降级。你知道吗可以尝试实现一个空版本,看看它是否解决了您的问题。是的,您可以将此方法留空。它基于您的要求。只需确保您没有从onDowngrade
调用super
方法。是的,S4和Note3也有同样的问题…我没有覆盖的降级方法。有趣的是databa它所抱怨的se从未超出版本1,但我的错误消息从11降级到1…非常奇怪。只有当设备安装了新版本并升级了DB,现在又返回到旧版本时,才会调用此方法。可能重复