Почему SQLiteOpenHelper.onUpgrade терпит неудачу? - PullRequest
1 голос
/ 13 сентября 2010

Привет (это мой первый пост на StackOverflow :),

каждый раз, когда я увеличиваю версию базы данных и выдвигаю обновленное приложение в пользователи, что-то странное происходит .. Для некоторых это работает отлично, и некоторые сообщения о сбоях (в том числе через отчеты Маркета из-за отсутствия столбцов таблицы, которые я только что добавил в onUpgrade.

Если вы хотите увидеть метод: http://code.google.com/p/tag-todo-list/source/browse/trunk/Donut/src/com/android/todo/data/ToDoDB.java#136

Я не могу обнаружить никаких исключений, которые появляются в onUpgrade. Что я в настоящее время делает, чтобы обойти эти проблемы перехватывает исключения, когда новые поля вызываются в первый раз и затем вызывает onUpgrade «вручную», что немного грязно.

Кроме того, приложение иногда генерирует исключение SQLiteException «нет такой таблицы» при доступе к основной таблице (опять же, только для некоторых пользователей), что невероятно странно ... Кто-то знает, почему это происходит? Или вы можете заметить что-то не так в моем коде?

Спасибо, Teo

1 Ответ

0 голосов
/ 13 сентября 2010

Я не прочитал ваш код подробно, но вы добавляете записи со значениями при добавлении столбца?Я вижу, что вы помещаете туда значение по умолчанию, но когда вы впервые добавляете новый столбец в существующую таблицу, что входит в поля столбцов для существующих записей в ваших таблицах?

У меня были аналогичные проблемы с этим при обновлении версий, но, выполнив вызов функции db.exec("UPDATE..., я мог бы вставить значение по умолчанию во все существующие записи.Это исправило много тех ошибок "X column not Существует" и тому подобное.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...