无法将数据库从版本 2 降级到 1,即使在全新安装并重新运行后也是如此

2022-09-04 06:14:44

我正在使用SQLite DB编写一个Android应用程序。

我做了一些实验,并将数据库版本从1更改为2。

然后我的数据库模式变得稳定,因为我没有发布应用程序,它供我自己使用

我决定再次将版本更改为1。

我做了全新安装,一切都很好。

但是,第二次运行会抛出以下错误:

06-05 10:03:35.683: E/AndroidRuntime(9010): android.database.sqlite.SQLiteException: Can't downgrade database from version 2 to 1
06-05 10:03:35.683: E/AndroidRuntime(9010):     at android.database.sqlite.SQLiteOpenHelper.onDowngrade(SQLiteOpenHelper.java:361)

为什么会这样,毕竟我做了全新安装,数据库也应该被删除。不?

如何再次将版本更改为1?


答案 1

在以下情况下会引发此异常:

  • 运行代码的设备具有版本 2 的数据库文件。
  • 代码正在请求数据库的版本 1(带有构造函数的参数)SQLiteOpenHelper
  • onDowngrade()在代码中不被覆盖。

你说代码在全新安装后第一次工作正常。确保没有其他代码会再次将同一数据库文件的版本号提升为 2。


答案 2

有同样的问题,我像这样解决了。

@Override
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  db.setVersion(oldVersion);
}

推荐