加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SQLITE写入大量大数据时,报错ERR 11:database disk image is m

发布时间:2020-12-12 19:23:16 所属栏目:百科 来源:网络整理
导读:初始目的:往SQLITE数据库中,加入2K条人员的数据,人员数据包括:人员信息、人员图片、人员其他图片信息 准备工作: 把sqlite3.exe,sqlite3.dll,test.db,insert.bat放在同一个目录下,由于虚拟机操作,我放在了C盘根目录下 尝试方法: 1-由于SQLITE不支持循

初始目的:往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,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,'','2017-03-31 17:30:30');")

pause 
当只插入人员和人员图片时,数据可以正常插入,但是插入大容量的图片时,就会报错ERR 11:database disk image is malformed
此时,上网查看得出时文件损坏,看了很多,也没有找到大量写入为什么会文件损坏,只能只解决问题了:

首先查看文件是否损坏:

进入cmd命令行

sqlite3 test.db回车

sqlite>PRAGMA integrity_check;
可以查看到文件损坏

文件修复:

sqlite3 test.db
sqlite>.output tmp.sql
sqlite>.dump
sqlite>.quit

把数据导入新的库中
sqlite3 test1
sqlite>.read tmp.sql
sqlite>.quit
然后修改批处理文件为新的数据库名称,然后切换到C盘根目录下,继续执行,可以增加数据


其中注意内容:

1-批处理中命令行写入SQL语句时,用“”把语句引起来

2-在cmd中运行循环时,使用%i代替%%i

3-插入人员附属信息时,报外键错误,发现是人员表的主键人员ID不是主键,加上主键属性,则可以执行

4-使用Navicat开启.db文件时,报数据库只读,则修改.db文件的操作属性,然后用管理员权限运行批处理文件或者开启Navicat


参考内容:http://www.sunnyu.com/?p=201

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读