在Native Android应用程序中使用MDM的设备上突然关闭了Sqlite数据库

时间:2018-05-03 14:49:09

标签: sqlite android-sqlite mdm sqlcipher soti

我们的Android应用程序已被成千上万的用户使用,过去四年一直在使用。该应用程序存储数十万行,每天在数个不同的表中插入,更新和删除数千个行。我们正在使用 SQLCipher - Zetetic 。最近,我们的一位客户开始面临他们在设备 Samsung J3 上使用的MDM(SOTI)软件的问题。在启用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=?

这并不总是可重复的,但一旦发生,从那时起,应用程序无法打开数据库,即使它存在于手机的存储上。我们设法从受影响的设备中提取数据库,并观察到表 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()方法运行alter table / add table命令。

0 个答案:

没有答案