微信 SQLite 数据库修复实践】的更多相关文章

1.前言 众所周知,微信在后台服务器不保存聊天记录,微信在移动客户端所有的聊天记录都存储在一个 SQLite 数据库中,一旦这个数据库损坏,将会丢失用户多年的聊天记录.而我们监控到现网的损坏率是0.02%,也就是每 1w 个用户就有 2 个会遇到数据库损坏.考虑到微信这么庞大的用户基数,这个损坏率就很严重了.更严重的是我们用的官方修复算法,修复成功率只有 30%.损坏率高,修复率低,这两个问题都需要我们着手解决. 2.SQLite 损坏原因及其优化 我们首先来看 SQLite 损坏的原因,SQL…
SQLite 大家都知道,就不多说了. 有时候数据量大了,或者存储过程中出现异常,数据库就可能会出问题. 这是以前公司产品出现过的问题,导致软件都打不开了,我花了不少时间才解决的,趁现在有空贡献出来. 先下载一个 sqlite3 的命令行工具,下载对应系统版本的  command-line shell 下载完成后解压到一个目录下,顺便把要修复的数据库也放到该目录下. 打开终端(CMD)进入到该目录. 执行以下命令: sqlite3 要修复的数据库名 .output "_temp.tmp"…
最近在研究解密微信APP的数据库, 1.通过Android手机内置备份功能,可以获取到微信的数据库文件,再通过adb传到电脑上. 2.获取微信EnMicroMsg.db库的密码(通过IMEI和uin值) 方法见网页:http://www.wjdiankong.cn/android%E9%80%86%E5%90%91%E4%B9%8B%E6%97%85-android%E4%B8%AD%E5%A6%82%E4%BD%95%E8%8E%B7%E5%8F%96%E5%9C%A8%E9%9D%9Eroo…
数据库如何发生损坏   SQLite 数据库具有很强的抗损坏能力.在执行事务时如果发生应用程序崩溃.操作系统崩溃甚至电源故障,那么在下次访问数据库文件时,会自动回滚部分写入的事务.恢复过程是全自动的,不需要用户或应用程序的任何操作.尽管 SQLite 数据库具有很强的抗损坏能力,但仍有可能发生损坏. 1. db文件被其他线程或进程破坏   数据库文件本身是磁盘文件的一种,因此任何进程都可以往这个文件中写入数据.SQLite 自身对这种行为也无能为力. 1.1. 向已经关闭的文件描述符继续写入数据…
目 录 第1章 说明    1 1 下载SQLite Tools    1 2 运行    2 第1章 说明 笔者编写的一个程序,无法往 SQLite 数据库文件里写数据.使用SQLiteSpy打开该文件后显示如下错误: 图1 上网搜到了这篇博文:http://blog.csdn.net/bamboo28/article/details/7034447 把数据库文件修复后,问题解决.现将数据库文件修复步骤总结如下. 1 下载SQLite Tools 网址http://www.sqlite.org…
  版权声明:博客将逐步迁移到 http://cwqqq.com https://blog.csdn.net/cwqcwk1/article/details/45541409 昨晚,朋友和我反馈SQLite数据库发生损坏有没有办法恢复.大致的情况是这样的,当数据库在使用时不小心用了新的文件覆盖数据库,导致了SQLite数据库出现了损坏,打开的时候出现要输入密码,而且不能把SQL语句dump下来.所以,文章这里整理SQLite数据库出现损坏的所有情况,以及如何修复损坏的SQLite数据库文件.  …
6.5.1    使用事务 前面我们已经知道,SQLite 数据库是支持事务的,事务的特性可以保证让某一系列的操 作要么全部完成,要么一个都不会完成.那么在什么情况下才需要使用事务呢?想象以下场 景,比如你正在进行一次转账操作,银行会将转账的金额先从你的账户中扣除,然后再向收 款方的账户中添加等量的金额.看上去好像没什么问题吧?可是,如果当你账户中的金额刚 刚被扣除,这时由于一些异常原因导致对方收款失败,这一部分钱就凭空消失了!当然银行 肯定已经充分考虑到了这种情况,它会保证扣钱和收款的操作要么…
软件用的是Sqlite数据库,昨天还好好的,今天开机登录软件报错:database disk image is malformed 用Sqlite Expert Personal 重建索引,发现其中一个表损坏,好在这个表数据不多,也不是很重要,于是想删除这个表重新建,结果也不让删. 网上一顿狂搜,找到 i果儿网 的一篇博文:sqlite关于The database disk image is malformed问题的解决  按照博文的方法终于解决了我的问题 sqlite3 old.db .dum…
之前我们讲了如何将数据存储在文件中,那么除了这种方式呢,就是我们常见的大家都知道的将数据存储在数据库当中了. 将数据存储在数据库中的优势: 1)存储在数据库中的数据更加方便操作,比如增.删.改.查等 2)可以实现事务的回滚,比如银行转账等 3)方便维护,可读性高 4)资源占用少,性能高 5)-- SQLite数据库在我们日常生活中随处不见了,比如我们的手机~现在市场上的手机都是用SQLite数据库作为数据的存储的. 以及我们常看见的智能家居,也是用SQLite数据库去记录数据的.以及我们经常用到…
数据库定义: 数据库是依照某种数据模型组织起来并存在二级存储器中的数据集合,此集合具有尽可能不重复,以最优方式为特定组织提供多种应用服务,其数据结构独立于应用程序,对数据的CRUD操作进行统一管理和控制,数据库是数据管理的高级阶段,是在文件系统上发展起来的. 基本结构: 数据库分三个层次:分别为物理数据层.概念数据层.逻辑数据层. 物理数据层:它是数据库的最内层,是物理存贮设备上实际存储的数据的集合.这些数据是原始数据,是用户加工的对象,由内部模式描述的指令操作处理的位串.字符和字组成. 概念数…