Миграция таблиц аварийно завершает работу при обновлении магазина, но работает локально

Я использую 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 и версией выпуска локально. Эта ошибка стоила мне многих сбоев в рабочем приложении, пока я не удалил столбец в качестве быстрого исправления.

Надеюсь, у кого-то есть идея :)


person Matthias    schedule 08.03.2016    source источник
comment
Вы уверены, что версия базы данных приложения для магазина уже не 2?   -  person Yazan    schedule 08.03.2016
comment
Я восстановил все свои выпуски и собрал данные базы данных, и я вижу, что версия базы данных была установлена ​​​​на 1 во всех предыдущих выпусках. В настоящее время работающее быстрое исправление с удаленной аннотацией столбца также установлено на версию 2. Я мог бы, вероятно, обновить приложение третьей версией, но боюсь получить уже доступную колонку-ошибка на некоторых устройствах. Я не могу проверить базы данных клиентов...   -  person Matthias    schedule 08.03.2016
comment
вы можете проверять поля таблицы разными способами, например, этот вопрос stackoverflow.com/questions/4550896/ вы можете увеличить db-версию до 3 или 4 и onUpgrade() проверить таблицу и сделать то, что вам нужно   -  person Yazan    schedule 09.03.2016