热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

当Sqlite数据库损坏时,技术上该怎么办?如何检测?

如何解决《当Sqlite数据库损坏时,技术上该怎么办?如何检测?》经验,为你挑选了1个好方法。

我正在执行处理数据库损坏的任务,因此我一直在研究SQLite的如何损坏SQLite数据库和SO的如何验证数据库文件是否有效/一致。

但是我还有更具体的问题,可能对其他人也有帮助。布尔答案还可以

    如果sqlite数据库文件已损坏,我可以打开它吗?有时还是总是?

    如果answer1是yes并且我打开它,读/写操作会导致我的应用程序崩溃还是只会返回可以处理的错误?

    如果发生损坏,我的以下(下一个)读/写操作是否可以成功进行,或者每次读/写操作都将返回错误?

    在成功创建和关闭数据库文件之后md5sum,如果我想避免quick_check并且integrity_check速度较慢,是否可以在下次打开文件时检测到任何损坏?

angry person.. 5

数据损坏的本质是,除非您运行彻底的验证过程,否则所有赌注都将消失。什么都可能发生。猪会飞。谁知道。

您的问题的答案:

    有时候是。由于SQLite在打开时不会验证整个数据库,因此除非在打开过程中碰巧读取了损坏的数据,否则它无法知道文件已损坏。

    最有可能的崩溃操作将以您可以处理的方式崩溃。如果SQLite中存在可利用的错误(例如缓冲区溢出错误或类似错误),则所有赌注都已取消,但没有迹象表明存在此类错误。

    有些可以工作,有些可以失败,没有办法事先知道。

    您无法使用MD5检测到损坏的SQLite数据库。首先,正确的MD5值应该是多少?唯一知道的方法是从文件中计算出来,这也是您要验证的内容。

简而言之,pragma integrity_check;除了无法定期执行之外,您无法保证SQLite如何处理损坏的数据库。

例如,如果发生损坏使数据库看起来有效,但该数据库不再包含用户存储在其中的原始数据,该怎么办?



1> angry person..:

数据损坏的本质是,除非您运行彻底的验证过程,否则所有赌注都将消失。什么都可能发生。猪会飞。谁知道。

您的问题的答案:

    有时候是。由于SQLite在打开时不会验证整个数据库,因此除非在打开过程中碰巧读取了损坏的数据,否则它无法知道文件已损坏。

    最有可能的崩溃操作将以您可以处理的方式崩溃。如果SQLite中存在可利用的错误(例如缓冲区溢出错误或类似错误),则所有赌注都已取消,但没有迹象表明存在此类错误。

    有些可以工作,有些可以失败,没有办法事先知道。

    您无法使用MD5检测到损坏的SQLite数据库。首先,正确的MD5值应该是多少?唯一知道的方法是从文件中计算出来,这也是您要验证的内容。

简而言之,pragma integrity_check;除了无法定期执行之外,您无法保证SQLite如何处理损坏的数据库。

例如,如果发生损坏使数据库看起来有效,但该数据库不再包含用户存储在其中的原始数据,该怎么办?


推荐阅读
  • Python使用SQLite1.sqlite3的安装python2.5.x以上版本默认自带sqlite3模块。2.链接sqlite3数据库```#导入sqlite3模块import ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • iOS关于移动端SQLite,你想知道的都有
    一、SQLite简介SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目 ... [详细]
  • 转自:http:www.cnblogs.comzeroonep4316346.html如果一个.NET应用要自适应32位64位系统,只需要在项目的“目标平台”设置为“AnyCPU”。但是 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • Yii framwork 应用小窍门
    Yiiframework应用小窍门1.YiiFramework]如何获取当前controller的名称?下面语句就可以获取当前控制器的名称了!Php代码 ... [详细]
  • destoon会员注册提示“数据校验失败(2)”解决方法【PHP】
    后端开发|php教程destoon,会员注册,数据校验失败,后端开发-php教程很多人在使用destoon建立一个B2B系统的时候,会在企业站注册企业用户的时候出现:“数据校验失败 ... [详细]
  • PHP连接MySQL的2种方法小结以及防止乱码【PHP】
    后端开发|php教程PHP,MySQL,乱码后端开发-php教程PHP的MySQL配置报错信息:ClassmysqlinotfoundinAnswer:1.在confphp.ini ... [详细]
  • .NetCore+DDD基础分层+项目基本框架+个人总结
    为什么要写这篇文章1,在大半年前,公司开发任务比较轻松,自己不知道干什么,但是又想要学习技术,比较迷茫,后面我接触到了博客园,看了一个帖子,深有感触,我当时不知道学习什么,于是我信 ... [详细]
author-avatar
懒懒加菲猫爱小狐狸
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有