在iOS上使用fmdb时出现以下错误。这是什么意思?
调用sqlite3_step时出错(1:无法在a内启动事务 事务)SQLITE_ERROR DB Query:开始独占事务 最终确定或重置语句的未知错误(1:无法启动a 事务内的事务)DB Query:开始独占 交易
答案 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。这是不允许的,并且永远不需要发生,只需从第一个事务块中进行所有更新。