java - 使用相同的方法恢复 Room 数据库,但使用不同的 DAO
问题描述
有 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 参考。
解决方案
(已解决)我发现了那个特定房间数据库的问题。我没有在 BACKUP 之前关闭数据库,跳过了 ref。文件 -SHM 和 -WAL 参考。这就是为什么我在 RESTORE 期间获得“E/SQLiteLog:(26)文件已加密或不是数据库”。
推荐阅读
- outlook - 为什么 Outlook 不更新地址列表
- loopbackjs - 如何过滤一对多模型关系以便只返回活动记录?
- c++ - 指向不同派生类的指针数组
- dart - 等待第一个流事件作为未来?
- sql - SQL Server:创建唯一键但其中一列可能有多个值
- android - 无法从 Activity 调用 BroadcastReceiver
- python - 如何在一行中分配变量中的for循环值
- elixir - 在 Elixir 中的列表上“滑动窗口”
- google-analytics - 可以使用相同的跟踪 ID 创建多个跟踪器吗?
- ios - Swift 4,错误,UITableViewController perfrom segue,线程 1:信号 SIGABRT