如何通过启用WAL备份Android



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

如何将数据库文件备份到Android上的SD卡?

Android备份/还原:如何备份内部数据库?

Android备份/还原:如何备份内部数据库?

实际上,我使用此方法备份了数据库,直到不久前它才能完美地工作。直到一些多线程使我使用EnableWriteAheadlogging现在,我在数据库文件附近还有两个文件,其中有.db-wal.db-shm扩展。

仅复制Datbase文件.db无法正常工作,因为大多数情况下,该文件不包含最新的数据库提交(可用的应用程序本身),尽管)

正如SQLite人员所建议的那样,备份SQLite数据库的最佳实践是使用备份API,但是有人可以指导我如何从应用程序内部使用此API,甚至可以使用SQLITE .dump(我如何转储该API某些SQLITE3表的数据?)来自应用程序内部的方法?

那么,哪一种是从Android应用程序备份SQLite数据库的最佳实践?

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

2-使用sqlite备份api

3-使用sqlite .dump

4-任何其他方法

sqlite备份API是唯一与其他线程/进程的并发写入访问权限的机制。当然,这意味着Android数据库框架无法让您访问它。

如果您确定没有任何活动连接,则只需复制 all 文件即可。(遗漏日记帐或WAL文件将导致数据损坏。)对于WAL,-shm文件不包含任何永久数据,并且可以省略。

sqlite版本3.27.0(2019-02-07)中引入的命令的真空可以用作备份API的替代方案。

最新更新