На устройствах с модифицированными версиями Android я получаю эту ошибку.Например на устройствах Xiaomi.
String query = "select * from dialogues where userId = ? and topChat = 0 order by updatedAtByClient desc";
Cursor dialogRes = db.rawQuery(query, new String[]{userId});
Здесь я получаю исключение:
android.database.sqlite.SQLiteException: no such column: topChat (code 1):,
while compiling: select * from dialogues where userId = ? and topChat = 0
order by updatedAtByClient desc
Я написал сообщение об исключении вручную, потому что пользователь прислал его мне на скриншоте, поэтому могут быть опечатки.
Как это можно исправить и почему это происходит?
UPD1: оператор создания таблицы выглядит примерно так:
"CREATE TABLE IF NOT EXISTS dialogues(fieldName VARCHAR, camelCaseFieldName VARCHAR,
topChat INTEGER, createdAt DATE);";
И у меня правильно реализованометод обновления для меня, когда я изменяю структуру БД, но это конкретное имя таблицы и поля не менялось долгое время.
UPD2: я сделал apk для пользователя с проблемами, который регистрирует столбцы таблицы,и я видел проблемный столбец в журнале, и пользователь говорит, что эта версия работает нормально.
Так что, похоже, эта ошибка не происходит 100% раз.Очень странно.Может быть, есть способ проверить целостность базы данных после ее создания и воссоздать таблицы с ошибками?