SQL删除操作问题,3点时一个错误导致数据库资料完全混乱,那我想删除今天3点后的操作,需要啥语句?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL删除操作问题,3点时一个错误导致数据库资料完全混乱,那我想删除今天3点后的操作,需要啥语句?相关的知识,希望对你有一定的参考价值。

如果你之前有过备份,并且没有删除日志,就可以用"通过日志还原"来生成3点以前的"正确的数据库"。理论上就是用以前的备份为基础,执行备份时间至“指定时间”段内日志记录的操作。
具体的执行步骤网上很多介绍,示例也有。
为了防止错误,最好将现在的数据库文件也拷贝一份出来以备不测。
参考技术A delete from table where date > '2012-02-18 15:00'
date是你数据中的记录日期 的那列名,时间格式,你看表里的时间格式
删除前备份一下数据库
参考技术B sql数据恢复,搜一下,有软件。

SQLite 删除表导致数据库被锁定错误

【中文标题】SQLite 删除表导致数据库被锁定错误【英文标题】:SQLite Drop Table Causes Database is Locked Error 【发布时间】:2014-06-23 05:31:04 【问题描述】:

我创建了一个小的数据库升级工具来根据 PRAGMA user_version 更新我们的 sqlite 数据库表。它一直运行良好,直到最近我需要完全删除一个表。

显然drop table命令是

DROP TABLE tbl;

sql指令的执行使用:

NSString *currentUpdateStatement = [upgradeStatements objectAtIndex:statementNumber];
DLog(@"Update statement is: %@", currentUpdateStatement);
const char *sql_stmt = [currentUpdateStatement UTF8String];
char *errMsg;
//Start executing the upgrade command
if (sqlite3_exec(self.database, sql_stmt, NULL, NULL, &errMsg) == SQLITE_OK)

    DLog(@"Upgrade statement %i successful", statementNumber);
 else 
    NSString *errorMessage = [NSString stringWithUTF8String:errMsg];
    ELog(@"Upgrading failed at statement %i in version %i. Message: %@",
    statementNumber, newVersionNumber, errorMessage);
    [NSException raise:@"Database upgrade failed"
    format:@"Database could not be upgraded to version %i. "
    "Failed at command %i due to error '%@'",newVersionNumber, statementNumber, errorMessage];
 

每次我尝试运行删除表命令时,执行都会失败并显示“数据库已锁定”,结果为 SQLITE_LOCKED。

所有其他命令都很好。我试图一遍又一遍地阅读 SQL 文档,但没有成功。 大家觉得呢?

【问题讨论】:

其他一些数据库连接有一个活动事务。 @CL 数据库只被应用程序中的1个实例使用,数据库升级完成后才返回,所以不能有另一个活动事务。 你假设什么都没关系;数据库认为还有另一个事务。 @hishamaus 你找到解决方案了吗。我也有同样的问题。 【参考方案1】:

在前面的事务之后缺少 sqlite3_finalize(statement) 可能会导致此错误。

【讨论】:

根据 SQLite3 文档,sqlite3_exec 是执行 sqlite3_prepare_v2()、sqlite3_step() 和 sqlite3_finalize() 的包装语句,我假设我不需要调用 finalize。 @hishamaus 你在使用sqlite3_exec 吗? @CL 实际上刚刚开始使用上面的代码。我尝试了正常的准备步骤 finalize 和这个,都没有工作。需要注意的一点是,如果未触及表,则 drop 命令将正常工作(如果先前插入和删除了记录,则认为它已触及)

以上是关于SQL删除操作问题,3点时一个错误导致数据库资料完全混乱,那我想删除今天3点后的操作,需要啥语句?的主要内容,如果未能解决你的问题,请参考以下文章

java程序,每隔3秒查询30条数据出来,对每条数据进行处理,处理完删除数据,查询数据时有时候报异常

ABAP中,用Ranges定义的内表,由于数据量大导致运行错误

SQL中视图的创建。修改,删除

sql拼接错误直到数据全部删除

查询中的 SQL 变量导致意外的 SQL 语法错误 [重复]

Silverlight 设计器加载错误