DBAtlas · 数据库运维图谱

225 TransactionTooOld: TransactionTooOld

MongoDB

含义

在多文档事务中运行了某条命令,但其事务编号比服务器为该会话所见的最新事务编号更旧。也就是说,已经启动了一个更新的事务,因此这个旧事务已不再有效。

原因

在旧事务完成之前,同一会话中启动了新事务,或由于并发导致事务编号乱序递增。通常发生在会话对象被错误共享或多个线程使用同一会话时。

解决方法

为每个逻辑事务正确管理会话生命周期;不要在多个线程之间并发共享一个会话。使用驱动推荐的 withTransaction/回调 API 运行事务(它会处理重试和编号管理)。在启动新事务之前,用 commit/abort 结束前一个事务。

在 DBAtlas 中打开 →

同一数据库的其他条目