最近我更新了我的安卓游戏,编辑sqlite数据库在我的表中添加新字段,更新后,我收到4个崩溃报告(其中3个来自同一设备,三星Galaxy S4)
android.database.sqlite.SQLiteException:无法降级数据库 版本2到1 android.database.sqlite.SQLiteOpenHelper.onDowngrade(SQLiteOpenHelper.java:361) 在 android.database.sqlite.SQLiteOpenHelper.getDatabaseLocked(SQLiteOpenHelper.java:255) 在 android.database.sqlite.SQLiteOpenHelper.getWritableDatabase(SQLiteOpenHelper.java:164)
我真的无法理解可能是什么原因,甚至可能开始降级数据库,而实际上需要在我的上一个数据库中进行升级。
在更新期间,我显然将DATABASE_VERSION值从1增加到2
我没有凌驾于降级方法,我的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);
}
}
谢谢。
答案 0 :(得分:3)
问题是您没有覆盖onDowngrade
方法。正如javadoc中所述,您需要,或者您将获得例外:
如果没有覆盖,默认实现将拒绝降级并抛出SQLiteException