iOS fmdb:获取sqlite错误

时间:2015-05-26 15:27:33

标签: ios objective-c fmdb

在iOS上使用fmdb时出现以下错误。这是什么意思?

  

调用sqlite3_step时出错(1:无法在a内启动事务   事务)SQLITE_ERROR DB Query:开始独占事务   最终确定或重置语句的未知错误(1:无法启动a   事务内的事务)DB Query:开始独占   交易

2 个答案:

答案 0 :(得分:1)

查找对FMDatabase方法beginTransaction的嵌套调用和/或手动执行BEGIN TRANSACTION SQL。或者,如果使用FMDatabaseQueue,请查找可能在另一个inTransaction块中调用inTransaction的情况。

或者,如果您手动拨打beginTransaction和/或执行BEGIN TRANSACTION,请确保通过余额commit / rollback进行抵消或执行COMMIT / END / ROLLBACK SQL。这是使用FMDatabaseQueue方法inTransaction的好处,因为您知道您不会无意中忽略结束交易。

最重要的是,请确保您不会在不结束前一笔交易的情况下开始一笔交易。如果您没有找到它,请在您进入交易的任何地方以及退出交易的任何地方放置断点/日志语句,问题应该很快就会显现出来。

答案 1 :(得分:0)

如果没有看到你正在对fmdb做什么调用,很难确定出现了什么问题,但听起来你正在从现有的inTransaction块中调用inTransaction。这是不允许的,并且永远不需要发生,只需从第一个事务块中进行所有更新。