SQLite数据库打开某一张表时,提示“database disk image is malformed”
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQLite数据库打开某一张表时,提示“database disk image is malformed”相关的知识,希望对你有一定的参考价值。
我是用Navicat for SQLite打开的数据库。烦请知道的大神告之,万分感谢
估计文件点损坏SQLite数据库错误:The database disk image is malformed 解决方法:
今天一客户使用我们软件时突然停电,再次启动软件查询SQLite数据库报 The database disk image is malformed 错误。
百度一下基本上全部是http://www.cnblogs.com/yelaiju/archive/2011/03/27/1996863.html这个方法,但这个方法对于较大的数据库根本无法解决,我遇到的数据文件有58M,导出SQL文件61M,在执行SQL时一直处于卡死状态,证明是不可行的,可能对于小的数据文件有用,没有测试过。
最后这个问题还是解决了,我的解决方法是:
下载SQLite Expert Professional,一定要Professional版(收费)的,Personal版(免费)的没有修复功能。
这里有一个绿色破解版的可以下载:http://url.cn/JVyaU5,下载之后直接解压就可以用了。
双击SQLiteExpertPro.exe,启动SQLite Expert Professional
打开要修复的sqlite数据文件,如果出现下图的提示:
说明数据库文件存在密码,点击"OK",关闭提示,在“db”上点击右键:
选择“Enter Encryption Key”:
输入数据库密码后,点击“OK”,这样数据库已经打开了,小红"x"变成了绿色的小箭头,再“db”上点击右键,选择“Repair”,如下图:
点击“Repair”后弹出对话框如下图:
在 New file 那里输入修复后数据库文件的名字,点击“Start”,就开始修复了,这里输入的是db_repaired,用db_repaired改名后替换原来的db,程序已经可以正常运行了。 参考技术A 原因有很多种,磁盘空间不足,还有就是写入数据过程中突然掉电等。 这种情况,如果数据还可以导出,那么就可以修复。
>sqlite Database_1.db
SQLite version 3.6.2
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .output “_temp.tmp”
sqlite> .dump
sqlite> .quit
>sqlite Database_1.new.db
SQLite version 3.6.2
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .read “_temp.tmp”
sqlite> .quit
另一种更快的修复方法
$echo “.dump” | sqlite3 old.db | sqlite3 new.db
//直接将old.db 修复为new.db
或者
sqlite3 newsfeed.db .dump >newsfeed.sql
sqlite3 newsfeed.db 参考技术B 估计文件点损坏
查看帖希望帮助
http://rimland.blog.163.com/blog/static/883254620128281588906/追问
数据库有密码的情况下,这种方法是不行的。。密码都输入不上去
关于checkbox对应一张表时如何遍历
html代码:
<table>
<tr>
<td><input name=‘one‘ type=‘checkbox‘ value=‘1‘/></td>
<td name="name">张三</td>
<td name="age">35</td>
<td name="job">职员</td>
<td naem="sal">3444</td>
</tr>
<tr>
<td><input name=‘one‘ type=‘checkbox‘ value=‘1‘/></td>
<td name="name">李四</td>
<td name="age">34</td>
<td name="job">职员</td>
<td naem="sal">4555</td>
</tr>
<tr>
<td><input name=‘one‘ type=‘checkbox‘ value=‘1‘/></td>
<td name="name">王二</td>
<td name="age">55</td>
<td name="job">boss</td>
<td naem="sal">10000</td>
</tr>
</table>
<button id="btn" value="submit">submit</button>
js代码:
<script src="jquery-2.1.4/jquery.min.js"></script>
<script>
$(document).ready(function () {
$("#btn").click(function () {
var row;
$("input[type=‘checkbox‘]").each(function () {
if($(this).is(":checked")){
//获取整个表,为下面遍历
row = $(this).parent("td").parent("tr");
//比较val(),html(),text()的区别
var str = row.html();
var str1 = row.val();
var str2 = row.text();
alert(str);
alert(str1);
alert(str2);
//采用find() childen()方法进行选择
var str3 = row.find("td").text();
var str4 = row.find("td").val();
var str5 = row.find("td").html();
alert(str3);
alert(str4);
alert(str5);
var str6 = row.find(".name").text();
var str7 = row.find(".name").val();
var str8 = row.find(".name").html();
alert(str6);
alert(str7);
alert(str8);
}
})
})
})
</script>
以上是关于SQLite数据库打开某一张表时,提示“database disk image is malformed”的主要内容,如果未能解决你的问题,请参考以下文章