Я использую Activeandroid 3.1.0 для хранения некоторых данных в базах данных. Несколько дней назад мне нужно было обновить таблицу, чтобы добавить еще один столбец.
Рабочий процесс: увеличьте версию БД с 1 до 2:
<meta-data
android:name="AA_DB_NAME"
android:value="sqlite.db"/>
<meta-data
android:name="AA_DB_VERSION"
android:value="2"/>
Добавьте новый столбец в модель:
@Column(name = "test_column") private boolean test_column;
Напишите скрипт миграции:
ALTER TABLE #TABLENAME# ADD COLUMN test_column INTEGER;
Я искал в библиотеке и нашел, что логические переменные java и преобразованы в целое число.
Этот скрипт находится в:
app/src/main/assets/migrations/2.sql
Тестовый вариант использования: сохраните некоторые элементы -> обновите действия, описанные выше -> сохраните некоторые элементы и используйте столбец
Проблема: если я протестирую это локально, просто загрузив приложение на свой телефон напрямую, оно будет работать, но когда я загружу приложение с переносом в магазин воспроизведения, оно не сработает. Я получаю типичную ошибку «Нет такого столбца».
Кто-нибудь знает, не грузится ли скрипт миграции на конечный апк через магазин? Я думал, что proguard может удалить файл, но он также работает с proguard и версией выпуска локально. Эта ошибка стоила мне многих сбоев в рабочем приложении, пока я не удалил столбец в качестве быстрого исправления.
Надеюсь, у кого-то есть идея :)
onUpgrade()
проверить таблицу и сделать то, что вам нужно - person Yazan   schedule 09.03.2016