为什么SQLiteOpenHelper.onUpgrade会失败?

时间:2010-09-13 07:24:10

标签: android exception sqlite

嗨(这是我在StackOverflow上的第一篇文章:),

每次我增加数据库版本并将升级后的应用推送到 用户,奇怪的事情发生..对于一些人来说它完美无缺, 一些报告崩溃(包括通过市场报告 系统)由于缺少我刚刚在onUpgrade中添加的表列而导致的。

如果你想看到这个方法: http://code.google.com/p/tag-todo-list/source/browse/trunk/Donut/src/com/android/todo/data/ToDoDB.java#136

我无法发现onUpgrade中出现的任何异常。我是什么 目前正在绕过这些问题正在拦截 第一次调用新字段的例外情况 然后调用'手动'升级,这有点脏。

此外,应用程序有时会在访问主表时(再次,仅针对某些用户)生成“无此表”SQLiteException,这非常奇怪......有人知道为什么会发生这些事情吗?或者你能在我的代码中发现错误吗?

谢谢, TEO

1 个答案:

答案 0 :(得分:0)

我没有仔细阅读您的代码,但是在添加列时是否使用值为记录播种?我可以看到你在那里放了一个默认值,但是当你第一次在现有表中添加一个新列时,表中现有记录的列字段会怎样?

我在版本升级时发布了类似的内容,但是通过执行db.exec("UPDATE...函数调用,我可以将默认值播种到所有现有记录中。这修复了很多那些“X列不存在”的错误等等。