225 TransactionTooOld: TransactionTooOld
MongoDB含义
在多文档事务中运行了某条命令,但其事务编号比服务器为该会话所见的最新事务编号更旧。也就是说,已经启动了一个更新的事务,因此这个旧事务已不再有效。
原因
在旧事务完成之前,同一会话中启动了新事务,或由于并发导致事务编号乱序递增。通常发生在会话对象被错误共享或多个线程使用同一会话时。
解决方法
为每个逻辑事务正确管理会话生命周期;不要在多个线程之间并发共享一个会话。使用驱动推荐的 withTransaction/回调 API 运行事务(它会处理重试和编号管理)。在启动新事务之前,用 commit/abort 结束前一个事务。
同一数据库的其他条目
- 136 CappedPositionLostCapped collection position lost(固定集合位置丢失)
- 28 PathNotViableCannot use the part of the path to traverse the element(无法使用路径的一部分遍历元素)
- 216 ElectionInProgressElectionInProgress
- 246 SnapshotUnavailableSnapshotUnavailable
- 257 TransactionTooLargeTransactionTooLarge
- 276 IndexBuildAbortedIndexBuildAborted
- 86 IndexKeySpecsConflictIndexKeySpecsConflict