Восстановление базы данных комнат тем же методом, но с разными DAO - PullRequest
1 голос
/ 23 марта 2019

Иметь 5 комнатную базу данных с разными сущностями и дао каждого. Я использую те же методы для резервного копирования и восстановления, используя код ниже. Все они отлично работают, за исключением одного, которое выдает мне следующую ошибку после метода restoreSQL:

E / SQLiteLog: (26) файл зашифрован или не является базой данных

ПОМОГИТЕ.

private void backupSQL(String sdb, File tDB){
    File sDB  = getDatabasePath(sdb);
    P.closeDB(sdb); 
    try {
        FileUtils.copyFile(sDB, tDB);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

private void restoreSQL(File tDB, String sdb){
    File sDB  = getDatabasePath(sdb);
    P.closeDB(sdb); 
    try {
        FileUtils.copyFile(tDB, sDB);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Обновление: Очевидно, что первый вопрос, который я задам, заключается в том, в чем разница между DAO или идентичностью этой базы данных других. Ответ в том, что все они идентичны, и это сводило меня с ума.

Обновление 2: Я выяснил, в чем проблема с этой конкретной базой данных комнат. Я не закрывал эту суставную базу данных до BACKUP, поэтому пропустил ссылки -SHM и -WAL.

1 Ответ

1 голос
/ 27 марта 2019

(решено) Я выяснил, в чем проблема с этой конкретной базой данных комнат. Я не закрывал базу данных до BACKUP, пропуская ссылку. файлы -SHM и -WAL ref. Вот почему я получаю «E / SQLiteLog: (26) файл зашифрован или не является базой данных» во время RESTORE.

...