有 5 个房间数据库,每个房间都有不同的实体和 Dao。我使用以下代码使用相同的方法进行备份和恢复。所有这些都工作得很好,除了一个在“restoreSQL”方法之后抛出以下错误:
E/SQLiteLog: (26) file is encrypted or is not a database
请帮忙。
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:我发现了该特定房间数据库的问题所在。我在备份之前关闭了该特定数据库,因此跳过了 -SHM 和 -WAL 引用。
最佳答案
(已解决)我发现了该特定房间数据库的问题所在。我没有在备份之前关闭数据库,跳过引用。文件 -SHM 和 -WAL 引用。这就是为什么我在恢复期间获得“E/SQLiteLog:(26) 文件已加密或不是数据库”。
关于java - 使用相同的方法恢复 Room 数据库,但使用不同的 DAO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55316809/