一、事务故障
某个事务在运行过程中由于种种原因未运行至正常终止点,事务故障的常见原因,输入数据有误
运算溢出,违反了某些完整性限制发生锁死。
二、系统故障
由于某种原因造成整个系统的正常运行突然停止,致使所有正在运行的事务都以非正常方式终止。
发生系统故障时,内存中数据库缓冲区的信息全部丢失,但存储在外部存储设备上的数据未受影响 。
三、介质故障
硬件故障使存储在外存中的数据部分丢失或全部丢失 ,介质故障比前两类故障的可能性小得多,但破坏性最大。
可能由病毒引起。在文件描述符关掉以后,继续使用这个文件描述符访问
打开文件,获取文件描述符fd(其实是一个整形)
关闭文件
打开sqlite文件,获取文件描述符(碰巧也是)fd
另一个线程继续使用fd,写文件
sqlite文件被损坏
在事务进行过程中,进行数据库备份或恢复
在数据库事务过程中,数据库文件既包括老的内容,也包括新的内容。如果此时拷贝这个文件,数据库可能会被损坏。 备份数据库最好使用sqlite的api。
删除日志文件
日志文件中包括rollback需要的信息。删除以后,无法正确回滚,有可能会导致数据库损坏。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)