拥有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参考。
答案 0 :(得分:1)
(已解决),我发现了特定房间数据库的问题所在。我没有在备份之前关闭数据库,因此跳过了引用。文件-SHM和-WAL参考。这就是为什么我在还原期间获取“ E / SQLiteLog:(26)文件已加密或不是数据库”的原因。