天行健,君子以自强不息;阵势坤,君子以厚德载物。
每个人都有惰性,但不断学习是好好生活的根本,共勉!
文章均为学习整理条记,分享记载为主,如有错误请指正,共同学习进步。
在不同系统中修复文件的下令有些许差异
但不管在哪个系统中,都须要先安装sqlite3工具,才能利用以下下令
以下下令中sqlite.db就是损坏的db文件名
一、Linux环境中修复
在linux系统中实行以下
1. sqlite3版本检查
检查sqlite3版本
进行完整性检查的版本不低于3.25.2
2. 文件完整性检查
完整性检查下令,其中sqlite.db是数据库文件的名称
- sqlite3 sqlite.db
- "PRAGMA integrity_check;"
复制代码 如果报以下错误则表示文件完整性报错,文件损坏
Error: database disk image is malformed
3. 连接数据库
利用sqlite3工具连接数据库
4. 通过db文件生成sql文件
依次输入以下下令,将sql语句输出到old.sql中
回车
回车
参数解释:
.mode insert
:表示后续的查询结果将以插入语句的情势进行输出
.output ./old.sql
:表示将查询结果或其他输出重定向到指定的文件中
.dump
:该下令将数据库的结构和内容转储为 SQL 语句,可以备份数据库或将其迁移到其他 SQLite 数据库
实行退却出工具
5. 通过处理sql获取数据完整sql
编辑 old.sql 文件,并输出为 new.sql 文件
- cat ./old.sql | grep -v TRANSACTION | grep -v ROLLBACK | grep -v COMMIT >./new.sql
复制代码 下令从old.sql 文件中读取内容,过滤掉包含 “TRANSACTION”、“ROLLBACK” 和 “COMMIT” 的行,然后将结果生存到new.sql 文件中,目的是生成一个不包含事务语句的导出文件
从new.sql 生成新的修改好的repaired.db 数据库文件
- sqlite3 ./repaired.db ".read ./new.sql
- "
复制代码 最终生成的repaired.db 即为修复后的数据库文件
二、Windows环境中修复
在在windows系统中实行以下
1. sqlite3版本检查
检查sqlite3版本
进行完整性检查的版本不低于3.25.2
2. 文件完整性检查
完整性检查下令,其中sqlite.db是数据库文件的名称
- sqlite3 sqlite.db
- "PRAGMA integrity_check;"
复制代码 如果报以下错误则表示文件完整性报错,文件损坏
Error: database disk image is malformed
3. 连接数据库
利用sqlite3工具连接数据库
4. 通过db文件生成sql文件
依次输入以下下令,将sql语句输出到old.sql中
回车
回车
参数解释:
.mode insert
:表示后续的查询结果将以插入语句的情势进行输出
.output ./old.sql
:表示将查询结果或其他输出重定向到指定的文件中
.dump
:该下令将数据库的结构和内容转储为 SQL 语句,可以备份数据库或将其迁移到其他 SQLite 数据库
先不退出,接着实行下面的下令
5. 创建新文件
创建一个新的db文件用于存储新的修复后的数据
回车,生成一个新的db文件newdb.db
然退却出
6. 连接新文件
通过sqlite3连接新文件,也就是新的数据库newdb.db
7. 通过处理sql获取数据完整sql
编辑 old.sql 文件,并输出为 new.sql 文件
- cat ./old.sql | grep -v TRANSACTION | grep -v ROLLBACK | grep -v COMMIT >./new.sql
复制代码 下令从old.sql 文件中读取内容,过滤掉包含 “TRANSACTION”、“ROLLBACK” 和 “COMMIT” 的行,然后将结果生存到new.sql 文件中,目的是生成一个不包含事务语句的导出文件
从new.sql中生成新文件内容
最终newdb.db 即为修复后的数据库文件
注:
由于修复的原理是通过sql日记进行一一读取逆向写入,故恢复时间略久,需耐心等候
感谢阅读,祝君暴富!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |