База данных Sqlite неожиданно закрылась на устройствах, использующих MDM в приложении Native Android - PullRequest
0 голосов
/ 03 мая 2018

Наше приложение для Android используется тысячами пользователей и работает в течение последних четырех лет. Приложение хранит сотни тысяч строк, где ежедневно вставляются, обновляются и удаляются тысячи различных таблиц. Мы используем SQLCipher - Zetetic . Недавно у одного из наших клиентов возникла проблема с программным обеспечением MDM (SOTI), которое они используют на своем устройстве Samsung J3 . На устройствах с поддержкой MDM иногда база данных закрывается или повреждена при выполнении операции с базой данных со следующим исключением:

Caused by net.sqlcipher.database.SQLiteException no such table: customer_record: , while compiling: SELECT record_id, record_branch_id, record_customer_id, status, description, start_date FROM customer_record WHERE is_synchronized=?

Это не всегда воспроизводимо, но как только это происходит, с этого момента приложение не может открыть базу данных, даже если она существует в памяти телефона. Нам удалось извлечь базу данных из уязвимого устройства и мы обнаружили, что таблица table_1008 * customer_record присутствует в базе данных.

Может ли это быть вызвано тем, что MDM ограничивает доступ к файлу? Если да - вопрос в том, почему он не воспроизводится последовательно?

Обновление

В методе onUpgrade () мы применяем изменения базы данных / схемы, которые включены в текущую версию, по сравнению с более ранними версиями следующим образом

  public void onUpgrade(SQLiteDatabase pDb, int pOldVersion, int pNewVersion) {
      switch (pOldVersion) {
        case 5:// when moving from version 5 onward
          dbVersion5(pDb);
        case 6:// when moving from version 6 onward
          dbVersion5(pDb);    
        }

} * * тысяча двадцать-один

Где метод dbVersionX () запускает команды изменения таблицы / добавления таблицы.

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