相信很多使用SQLite3当做数据库的人都会一个现象,那就是当SQLite3有做写入的动作时,SQLite3会自动产生一个名为"数据库名称-journal"的暂存档。这是做什么用的呢?

答案是用来Rollback ,换句话说,就是当数据写入数据库有失败动作时,透过journal档案予以复原到未更动前(原始)数据,来确保数据完整与一致性。如果在每次写入的时间很长或频繁的进行数据库写入情况下,因系统(主机)电力不稳或突然断电时,那么下次重新启动,而journal档案若存在,则在开启SQLite数据库时,若发现有journal档案的存在,便会对数据库做Rollback 动作(还原)(详细内容:http://www.sqlite.org/atomiccommit.html)。但是有时候系统(主机)电力不稳或突然断电会导致journal档案损毁,因而造成SQLite数据库无法开启[问题1]。必须(手动)删除journal档案,SQLite数据库才能再度开启。

目前所知的方法有两种:

第一种方法:
在系统开机后第一次开启或每一次使用SQLite数据库时,先检查是否已经存在journal档案了,如果是则透过程序自动去删除该journal档案。
但是这有个问题,因为自动删除该journal档案,导致没有Rollback (还原)作用,无法保障数据完整与一致性。缺点二:有时候会发生程序无法自动删除(如:journal档案严重损毁),而导致上面的问题(无法开启数据库)[问题1]再度发生。

第二种方法:
使用"PRAGMA journal_mode = OFF"指令,这个指令能关闭自动产生journal暂存档动作。
但是如此一来当在写入数据库的过程,一旦发生意外状况,将会导致SQLite数据库无法保障数据完整与一致性。缺点二:journal_mode设定为OFF时,无法使用交易模式(Transaction)进行操作。

第二种方法的缺点二在如果需要使用交易模式(Transaction)进行操作时,可以透过"PRAGMA journal_mode = DELETE"指令,修改回原本的journal模式(journal_mode),就可以使用交易模式(Transaction)。

关闭SQLite3中的journal暂存档相关推荐

  1. 如何取消掉计算机更新图标,XP系统如何关闭右下角中的自动更新图标?

    相信大家在使用XP系统中,都有遇到过电脑右下角总是弹跳出"您的计算机可能存在风险"这是怎么回事呢?其实这是因为是系统关闭了系统自动更新,那么遇到这种问题该怎么解决呢?其实我们只要把 ...

  2. 02全志r58平台Android4.4.4下关闭内核中的CPU的开启关闭提示

    02全志r58平台Android4.4.4下关闭内核中的CPU的开启关闭提示 2017/8/18 13:53 版本:V1.0 开发板:SC5806(全志R58平台) SDK:android4.4.4 ...

  3. 一键设置mac显示选项_如何通过关闭浏览器中的一个选项卡将Mac上的电池寿命延长一倍...

    一键设置mac显示选项 by Primož Cigler 通过PrimožCigler 如何通过关闭浏览器中的一个选项卡将Mac上的电池寿命延长一倍 (How I doubled the batter ...

  4. el table怎么获取最后一行_element中el-table单行暂无数据和整体暂无数据的默认修改...

    element中el-table单行暂无数据和整体暂无数据的默认修改 最近在写element中的el-table表格时,遇到返回列表没有数据的情况 1.整个表格无数据 需要展示UI给的一张图片,奈何e ...

  5. Python-Snap7与 1212 PLC通信并保存到sqlite3中

    Python-Snap7与 1212 PLC通信并保存到sqlite3中 前言 配置 硬件 软件 软件配置过程 树莓派系统安装 树莓派固定IP设置 python更新i pip 安装 snap7安装 s ...

  6. 如何关闭 Linux 中的嘟嘟声

    在 Debian/Ubuntu Linux 默认情况下,PC 喇叭发出的嘟嘟声音警告(System Beep)应用的场合非常普遍.但在 shell 的 tab 补全.vi 的光标移动行首行尾等等情况下 ...

  7. 软件测试面试题:关闭浏览器中quit和close的区别

    关闭浏览器中quit和close的区别 简单来说,两个都可以实现退出浏览器session功能,close是关闭你当前聚焦的tab页面,而quit是关闭全部浏览器tab页面,并退出浏览器session. ...

  8. 如何从iCloud中下载元气骑士存档

    如何从iCloud中下载元气骑士存档 手机登陆iCloud 进入后输入你的iCloud账号和密码 输入之后点击下一步,如果提示双重认证点,跳过即可 打开Game Center 点击设置 点击搜索 输入 ...

  9. LaTeX 写作的两个辅助工具:统计中文字数和关闭Acrobat中的PDF文档

    LaTeX 没有像 Word 那样自带中文字数统计功能,加上 LaTeX 源文件中有许多控制字符,不能通过文件大小获知其中有多少汉字.为此我用C写了一个统计中文字数的小工具,名为 cwc ,即 chi ...

最新文章

  1. 图片管理之保存图片数据
  2. Qt / 查找可执行程序的依赖库
  3. 教你增加网站反向链接的7大法门和12奇招
  4. Xshell 连接本地的Linux 系统,提示:Could not connect to '192.168.182.128' (port 23): Connection failed
  5. HTML试题及答案(总结)
  6. 计算机集数控技术文献,数控技术
  7. mybatis 详解(三)------入门实例(基于注解)
  8. 【白皮书分享】2021内容营销白皮书.pdf(附下载链接)
  9. clr错误 8004005程序将立即终止_微软公开发布更多Surface驱动程序 固件支持终止日期...
  10. 推荐《喵星人行为心理学》
  11. 《python网络爬虫和信息提取》:全球电影票房排行榜(附更改后的代码)
  12. android自定义秒表(精确到0.1秒,带计次功能)
  13. 7-7 六度空间 (30分)
  14. 洛谷P5960 【模板】差分约束算法
  15. piaget读法_读音教学 | 这些手表品牌原来是这么念的!
  16. 50行Python搞定京东商品抢购
  17. 谷歌浏览器自带网页截图快捷键
  18. 容器服务ACK+容器网络文件系统CNFS快速搭建NGINX网站(体验有礼)
  19. 英语学习的几个实用网站
  20. Linux下shell自动输入密码,shell脚本通过expect脚本实现自动输入密码

热门文章

  1. ie11不兼容 html编辑器,ie11兼容性视图护驾浏览网页
  2. asp判断是否移动端_asp判断用户端是电脑访问还是移动设备方法
  3. 19 | 散列表(中):如何打造一个工业级水平的散列表?
  4. html下拉列表初始值不显示,javascript – 使用innerhtml显示下拉列表文本而不是值...
  5. linux php 上级目录,Linux目录架构详解_php
  6. 面试题:移动数组的元素
  7. 【C++深度剖析教程3】C++中类的静态成员变量
  8. selenium之截图
  9. 基于MODBUS协议的单片机与(串口屏)触摸屏通信(图文)
  10. [Leetcode]@python 90. Subsets II.py