6

任何人都可以帮我解决我的代码中发生的这个异常吗?

02-10 17:16:32.406: E/AndroidRuntime(8619): android.database.sqlite.SQLiteException: Can't downgrade database from version 2 to 1

我陷入了困境。我真的应该关心这个“数据库版本”吗?

4

3 回答 3

11

假设您正在使用,如果您希望能够在设备上使用比您的代码可以处理的更高版本的数据库运行您的应用程序,则Android SQLiteOpenHelper需要覆盖。onDowngrade

如果您的数据库模式将要更改(并且通常很有可能),您应该关心这个“数据库版本的事情”。

于 2013-02-22T06:19:34.857 回答
0

检查您的 Database SqliteOpenHelper 构造函数,如果您在 SQLitehelper (如 ORM)上使用更多,则最后一个参数应该相同

于 2014-07-16T06:45:40.543 回答
0

我试图将 SQLite 版本 1 更改为 2,因为我必须增加版本才能将新列添加到我的表中(alter)。它运行良好。然后,为了好玩,我尝试将 2 更改为 1,如下所示:

从:

public DatabaseHelper(Context context) {super(context, DB_NAME, null, 2);}

至:

public DatabaseHelper(Context context) {super(context, DB_NAME, null, 1);}

然后我得到了这个:

FATAL EXCEPTION: main
                                                 Process: com.example.android.vocab, PID: 3360
                                                 android.database.sqlite.SQLiteException: Can't downgrade database from version 2 to 1

正如我之前解释过的,我们不能在增加 SQLite 版本后减少它。所以你需要改回2或大于2

public DatabaseHelper(Context context) {
   super(context, DB_NAME, null, 2);
}

如果您正在尝试更新您的表格,可能需要通过3not2并且每次您需要更新表格时,您都需要增加版本(而不是减少)

如果您真的想降级版本,您可以覆盖onDowngrade()@Matthieu 在他的回答中表达的内容。

于 2017-07-19T17:52:40.660 回答