繁体   English   中英

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

[英]Can't downgrade database from version 2 to 1

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

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

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

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

你应该关心这个“数据库版本的东西”,如果你的数据库模式将会发生变化(通常,它很有可能)。

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

我试图将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);
}

如果你想更新你的表,可能需要经过32和每一个你需要更新表的时候,你需要增加版本(不减少)。

如果你真的想降级版本,可以覆盖onDowngrade()如@Matthieu在答案中所表达的那样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM