免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 13111 | 回复: 4
打印 上一主题 下一主题

如何读取sqlite数据库-shm、-wal的内容? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-01-29 19:21 |只看该作者 |倒序浏览
本帖最后由 freeand 于 2012-01-29 19:48 编辑

例如,有时候Firefox退出时,会留下 places.sqlite places.sqlite-shm places.sqlite-wal 三个文件(根据数据库文件名字留下相应的-shm和-wal文件)。
如果直接用 perl 读取 places.sqlite 数据库,得到的记录并不完整(那些记录在places.sqlite-shm places.sqlite-wal)。
如果执行一次
sqlite3.exe places.sqlite "pragma journal_mode;"
后(用其它sqlite工具如SQLite Expert打开它再关闭一次同样的效果,或者这样说,用数据库工具如SQLite Expert打开可以读取显示完整的数据),
places.sqlite-shm places.sqlite-wal 消失,这时候再用 perl 读取 places.sqlite 数据库是完整的。
如果不依赖 sqlite3.exe 或 SQLite Expert 等工具,如何直接用 perl 完整读取数据?


DBI-1.616
DBD-SQLite-1.35
都是最新的了。

试过
$dbh->do("PRAGMA integrity_check");
$dbh->do("PRAGMA journal_mode=WAL");
等都一样,没法读取完整的记录,perl退出后那额外的数据库文件(-shm和-wal文件)也不会自动删除。

完整测试(数据库、perl测试程序、sqlite3.exe),完整的数据moz_annos应该有二条记录,但perl只能读取一条。
places.sqlite.test.7z (214.22 KB, 下载次数: 84)

如果不放心 sqlite3.exe 可官方下载:
http://www.sqlite.org/sqlite-shell-win32-x86-3071000.zip

论坛徽章:
0
2 [报告]
发表于 2012-01-29 19:51 |只看该作者
已上传相关文件,有兴趣的朋友可以测试一下,谢谢。

论坛徽章:
0
3 [报告]
发表于 2012-06-03 17:22 |只看该作者
请问大家有解决方法吗?谢谢。

论坛徽章:
0
4 [报告]
发表于 2012-09-08 05:14 |只看该作者
还没有结果。。。

论坛徽章:
0
5 [报告]
发表于 2012-12-21 09:26 |只看该作者
android 上也有这样的问题 : 用工具直接读DB文件读不了,还命令读可以
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP