
SQLITE写入大量大数据时,报错ERR 11:database disk image is malformed
发布日期:2021-05-08 18:09:37
浏览次数:19
分类:精选文章
本文共 1125 字,大约阅读时间需要 3 分钟。
初始目的:往SQLITE数据库中,加入2K条人员的数据,人员数据包括:人员信息、人员图片、人员其他图片信息
准备工作:
把sqlite3.exe,sqlite3.dll,test.db,insert.bat放在同一个目录下,由于虚拟机操作,我放在了C盘根目录下
尝试方法:
1-由于SQLITE不支持循环操作,使用批处理文件,循环加入数据
批处理文件为:
@ECHO OFF For /L %%i in (3,1,2100) do ( sqlite3 test.db < insert.bat %%i)pause经测试对于‘<’符号总是会报错,貌似语法错误,
2-修改批处理文件为:
@ECHO OFF For /L %%i in (3,1,2100) do ( sqlite3 test.db "INSERT INTO t_person(person_id,person_code,person_name,gender_type_id,admin_flag,remark,flag,operator_id,creation_time) VALUES(%%i,'code_'%%i,'name_'%%i,1,0,'',0,1,'2017-03-31 17:30:30');")pause当只插入人员和人员图片时,数据可以正常插入,但是插入大容量的图片时,就会报错ERR 11:database disk image is malformed 此时,上网查看得出时文件损坏,看了很多,也没有找到大量写入为什么会文件损坏,只能只解决问题了:
首先查看文件是否损坏:
进入cmd命令行
sqlite3 test.db回车sqlite>PRAGMA integrity_check;可以查看到文件损坏
文件修复:
sqlite3 test.dbsqlite>.output tmp.sqlsqlite>.dumpsqlite>.quit把数据导入新的库中
sqlite3 test1sqlite>.read tmp.sqlsqlite>.quit然后修改批处理文件为新的数据库名称,然后切换到C盘根目录下,继续执行,可以增加数据
其中注意内容:
1-批处理中命令行写入SQL语句时,用“”把语句引起来
2-在cmd中运行循环时,使用%i代替%%i
3-插入人员附属信息时,报外键错误,发现是人员表的主键人员ID不是主键,加上主键属性,则可以执行
4-使用Navicat开启.db文件时,报数据库只读,则修改.db文件的操作属性,然后用管理员权限运行批处理文件或者开启Navicat
参考内容:http://www.sunnyu.com/?p=201
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2025年04月02日 11时25分28秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
工作半年的思考
2021-05-09
不可思议的纯 CSS 滚动进度条效果
2021-05-09
【CSS进阶】伪元素的妙用--单标签之美
2021-05-09
惊闻NBC在奥运后放弃使用Silverlight
2021-05-09
IE下尚未实现错误的原因
2021-05-09
创建自己的Docker基础镜像
2021-05-09
Python 简明教程 --- 20,Python 类中的属性与方法
2021-05-09
KNN 算法-理论篇-如何给电影进行分类
2021-05-09
Spring Cloud第九篇 | 分布式服务跟踪Sleuth
2021-05-09
CODING 敏捷实战系列课第三讲:可视化业务分析
2021-05-09
工作动态尽在掌握 - 使用 CODING 度量团队效能
2021-05-09
CODING DevOps 深度解析系列第二课报名倒计时!
2021-05-09
数据结构第八节(图(下))
2021-05-09
基于Mustache实现sql拼接
2021-05-09
POJ 2260 Error Correction 模拟 贪心 简单题
2021-05-09
gRPC在 ASP.NET Core 中应用学习(一)
2021-05-09
@SuppressWarnings 用法
2021-05-09
看完你就明白的锁系列之锁的状态
2021-05-09
看完这篇操作系统,和面试官扯皮就没问题了
2021-05-09
我的价值观
2021-05-09