由于没有可用空间,回滚失败

时间:2011-02-21 16:58:09

标签: sql transactions qt4 sqlite rollback

我使用QSqlDatabase访问我的sqlite3数据库。

当INSERT命令由于没有可用磁盘空间而失败时,回滚也将失败,并且我的日志中还有下一条消息:

Database error : disk I/O error
Database driver error : Unable to fetch row
Command = INSERT OR FAIL INTO Procedure ( ProcedureUUID, ProcedureGroupUUID, DefaultLocale, Author, CanBeDeleted, VersionMajor, VersionMinor, VersionMaintenance, VersionBuild ) VALUES( :ProcedureUUID, :ProcedureGroupUUID, :DefaultLocale, "User", 1, 0, 0, 0, 0 );

(我正在尝试记录每个事件)。

在我的代码中,我打开一个数据库,启动事务,然后执行查询。在任何查询失败的情况下,我都会进行回滚。

我希望每次回滚都能成功,但它的接合情况并非如此。

有人可以解释回滚失败时的情况吗? 以及如何调试此问题。

由于


编辑:

是不是我无法进行回滚,因为第一个SQL命令失败了?

1 个答案:

答案 0 :(得分:0)

我想我想通了,我正在为将来的参考作出答案。

如果第一个sql命令失败,则查询不会处于活动状态,并且无法进行回滚。最简单的方法是在执行回滚之前使用isActive检查查询是否处于活动状态。