最近使用C#操作sqlite时碰到一个错误,记一下
code = Unknown (-1), message = System.Data.SQLite.SQLiteException (0x80004005): unknown error
No transaction is active on this connection
在 System.Data.SQLite.SQLiteTransactionBase.IsValid(Boolean throwError)
在 System.Data.SQLite.SQLiteTransaction.Commit()
在 wechathelper.UserDBService.updateBatchField(List`1 list_p)
在 wechathelper.service.IndexManagerService.getRoomListResult(String msg)
分析到的原因是 sqlite的事务自动提交"AutoCommit",值默认是true,一般来说在调用BeginTransaction方法后,这个值会被设置成false,等调用commit方法后会重新设置为true,但是不知道什么影响下,在调用BeginTransaction有几率任然为true,这个时候事务在执行完sql语句的时候就已经提交了,再去调用commit就会产生上述情况。由于sqlite缺少相关状态、设置开启关闭AutoCommit的api,暂时没有找到解决方案。