无法将数据库从版本2降级为1

时间:2013-02-22 06:15:12

标签: android database-connection

有人可以帮我解决我的代码中发生的异常吗?

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

我被困在这里。我真的应该关心这个“数据库版本”吗?

3 个答案:

答案 0 :(得分:10)

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

如果您的数据库架构发生变化,您应该关心这个“数据库版本”(通常情况下,它很可能会发生变化)。

答案 1 :(得分:0)

检查你的数据库SqliteOpenHelper构造函数的最后一个参数应该是相同的,如果你使用多于SQLitehelper,如ORM

答案 2 :(得分:0)

我试图将SQLite版本1更改为2,因为我必须增加版本以向表中添加新列(alter)。它工作得很好。然后,为了好玩,我尝试将2改为2,如下所示:

自:

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);
}

如果您要更新表格,可能需要传递3而不是2,并且每次需要更新表格时,都需要增加版本(不减少)

如果你真的想降级版本,你可以覆盖{@ 1}}作为答案中表达的@Matthieu。