我打开数据库文件并使用sqlite3的open()方法获取数据库连接,并且在程序退出之前连接不会关闭.如果发生意外错误,例如计算机突然断电或操作系统崩溃,数据库文件的模式是否会损坏,或者其句柄丢失?更具体地说,如果我重启计算机,它是否可以保持可写状态?顺便说一句,我不关心错误发生时的数据丢失.
非常感谢你!
SQLite 专门用于防范这种情况.从官方SQLite是Transactional页面:
SQLite中单个事务中的所有更改要么完全发生,要么根本不发生,即使将更改写入磁盘的操作被中断也是如此
程序崩溃,
操作系统崩溃,或
电力故障.
在SQLite回归测试套件中使用特殊的测试工具对模型对操作系统崩溃和电源故障的数据库文件的影响进行了广泛的检查.
您可能也有兴趣SQLite的文章中原子提交SQLite中,如果你需要知道他们如何防止崩溃,如上述的具体细节.
当进程处于数据库更新过程中并且程序或操作系统崩溃或电源故障阻止更新完成时,将创建热日志.热门期刊是一种例外情况.存在热门期刊以从崩溃和电力故障中恢复.如果一切正常(也就是说,如果没有崩溃或电源故障),您将永远不会得到热门日记.
最糟糕的情况是你需要删除崩溃后留下的热门日志.