【问题标题】:How to backup Android database - with WAL enabled如何备份 Android 数据库 - 启用 WAL
【发布时间】:2016-12-27 07:32:06
【问题描述】:

我知道复制数据库文件solutoin,

How do I backup a database file to the SD card on Android?

Android backup/restore: how to backup an internal database?

Android backup/restore: how to backup an internal database?

事实上,我正在使用这种方法备份我的数据库,直到不久前它运行良好。 直到一些多线程的东西让我使用enableWriteAheadLogging 现在我在数据库文件附近还有两个文件,扩展名为.db-wal.db-shm

仅复制数据库文件.db 不起作用,因为大多数情况下该文件不包含最新的数据库提交(可用于 throw 应用程序本身)但是当我将三个文件一起复制时它似乎工作正常(不是放弃肯定,虽然)

正如 Sqlite 人所建议的那样,备份 sqlite 数据库的最佳做法是使用 backup api,但有人可以指导我如何从应用程序内部使用这个 api,甚至使用 sqlite .dump (@987654326 @) 来自应用程序内部的方法?

那么从 android 应用程序备份 sqlite 数据库的最佳实践是哪一个?

1- 从沙箱中复制所有与数据库相关的文件

2- 使用 sqlite 备份 API

3- 使用 sqlite .dump

4- 任何其他方法

【问题讨论】:

    标签: android database sqlite backup


    【解决方案1】:

    SQLite 备份 API 是唯一能够与来自其他线程/进程的并发写访问一起正常工作的机制。这当然意味着 Android 数据库框架不允许您访问它。

    如果您确定没有任何活动连接,您可以复制所有文件。 (省略日志或 WAL 文件会导致数据损坏。)对于 WAL,-shm 文件 不包含任何永久数据,可以省略。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      • 2018-09-18
      • 2011-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多