织梦网站导航如何删除,漫画app软件定制开发,网站后台管理密码破解,做网站外包公司相信很多使用SQLite3当做数据库的人都会一个现象#xff0c;那就是当SQLite3有做写入的动作时#xff0c;SQLite3会自动产生一个名为数据库名称-journal的暂存档。这是做什么用的呢? 答案是用来Rollback #xff0c;换句话说#xff0c;就是当数据写入数据库有… 相信很多使用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)。