android p备份数据库恢复后无法正常

我备份数据库只备份db文件和shred文件,将所有文件打包成一个文件,恢复就把这些东西解压出来。

Android8.0时备份数据库是没有问题,升级到9.0以后发现无法正常恢复了,开始怀疑压缩算法有问题,经过一系列排查最后发现坑在9.0直接使用db文件时如果db-shm文件和db-wal文件不匹配也无法使用。

解决方案:

备份的时候不经要备份db文件还要把db-shm和db-wal文件一起备份。具体什么原因还无法判断,可能是为了数据库安全吧。
 

-journal——回滚日志
回滚日志通常位于数据库文件所在的目录,一般在事务开始时创建,事务结束时删除(这取决于日志模式)

日志模式:
DELETE:默认的日志模式,一般在事务开始时创建回滚日志,事务结束时删除回滚日志。
PERSIST:事务结束时不删除回滚日志,而是在日志文件头部覆写0,这样也可以达到删除文件同样的效果,却减少了反复创建删除回滚日志的磁盘开销。
MEMORY:将回滚日志存储在内存而不是磁盘中,但因为在磁盘中没有用于恢复的文件,如果在事务中间发生崩溃或者掉电,那么整个数据库就有可能损坏。
OFF:禁用SQLite原子提交和回滚功能。
-wal——预写日志
作用与-journal文件一样,用于在WAL模式下操作。

当数据库连接首次打开时,wal文件就会被创建。当最后一次数据库连接被正常关闭时,wal文件就会被删除。如果最后一次数据库连接没有正常关闭,wal文件会保存下来,直到下一次打开数据库时才会自动删除。

shm——共享内存文件
共享内存文件用于提供一块共享内存给多个进程在WAL模式中访问相同的数据库。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值