Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Sqlite-降级_Java_Android_Database_Sqlite - Fatal编程技术网

Java Sqlite-降级

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

最近我更新了我的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如下所示:

@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,现在又返回到旧版本时,才会调用此方法。可能重复