Android.database.sqlite.SQLiteDatabaseCorruptException: database disk image is malformed
来源:互联网 发布:dnf韩服倍率后技能数据 编辑:程序博客网 时间:2024/05/17 21:24
sqlite数据库文件损坏的问题
What is an SQLITE_CORRUPT error? What does it mean for the database to be "malformed"? Why am I getting this error?
An SQLITE_CORRUPT error is returned when SQLite detects an error in the structure, format, or other control elements of the database file.
SQLite does not corrupt database files, except in the case of very rare bugs (see DatabaseCorruption) and even then the bugs are normally difficult to reproduce. Even if your application crashes in the middle of an update, your database is safe. The database is safe even if your OS crashes or takes a power loss. The crash-resistance of SQLite has been extensively studied and tested and is attested by years of real-world experience by millions of users."
That said, there are a number of things that external programs or bugs in your hardware or OS can do to corrupt a database file. Details can be found in the discussions on the atomic commit and locking support in SQLite as well as in the mailing list archives.
Your can use PRAGMA integrity_check to do a thorough but time intensive test of the database integrity.
Your can use PRAGMA quick_check to do a faster but less thorough test of the database integrity.
Depending how badly your database is corrupted, you may be able to recover some of the data by using the CLI to dump the schema and contents to a file and then recreate. Unfortunately, once humpty-dumpty falls off the wall, it is generally not possible to put him back together again.
最近研究发现,当磁盘空间写满或写入了格式不正确的数据或在操作db过程中内存溢出,那么.db文件的镜像就会被破坏,这种情况下再去执行有关此db的操作,android就会把该db文件删除掉,如果db文件损坏了,可在adb shell下恢复其数据,做法如下:
sqlite3 old.db(注:损坏的db文件)
.output tmp.sql
.dump
.quit
然后读取数据到新的db
sqlite3 new.db
.read tmp.sql
.quit
不过保险起见还是做好db的备份,因为一旦db文件损坏,在未知的情况下再去操作此db,android就会直接把此db给干掉(个人对android的这种做法不太满意)。我也郁闷了很久,看log和源码才知道的。
- Android.database.sqlite.SQLiteDatabaseCorruptException: database disk image is malformed
- 修复SQLite-database disk image is malformed
- 修复SQLite-database disk image is malformed
- SQLite 损坏 database disk image is malformed
- 修复SQLite-database disk image is malformed
- android sqllite database disk image is malformed
- sqlite错误 The database disk image is malformed database disk image is malformed 可解决
- sqlite错误 The database disk image is malformed database disk image is malformed 可解决
- sqlite错误 The database disk image is malformed database disk image is malformed 可解决
- sqlite错误 The database disk image is malformed database disk image is malformed 可解决
- Sqlite修复方法(database disk image is malformed)
- SQLite出现database disk image is malformed(11)的处理
- svn cleanup: sqlite: database disk image is malformed 解决方法
- sqlite数据库报错:database disk image is malformed
- [转]svn: E200030: sqlite[S11]: database disk image is malformed
- svn: E200030: sqlite[S11]: database disk image is malformed
- sqlite 修复 database disk image is malformed 问题
- SQLite-database disk image is malformed问题的解决
- javascript高级程序设计——笔记
- ==与.equals方法的比较区别
- spring 事务详解
- 引入recyclerview-v7导致的v4包冲突解决
- Linux下如何建立软件的桌面快捷方式
- Android.database.sqlite.SQLiteDatabaseCorruptException: database disk image is malformed
- XHR
- 解决UIColor设置值溢出的警告(UIColorBreakForOutOfRangeColorComponents)
- 9.19练习
- java基础:抽象类(09.27)
- RelativeLayout布局用到的主要属性
- AS从控制台或者环境变量中获取签名文件密码的方法
- Migrating From Eclipse to IntelliJ IDEA
- Jmeter之二:逻辑控制器学习(一)