DBAtlas · 数据库运维图谱

ERR DISCARD without MULTI: DISCARD without MULTI(未执行 MULTI 就调用 DISCARD)

Redis

含义

在没有打开 MULTI 块的情况下发送了 DISCARD。DISCARD 仅用于取消正在进行的事务;没有可取消的内容时返回此错误。

原因

在没有 MULTI 的情况下调用 DISCARD,或在事务已用 EXEC/DISCARD 关闭后再次调用;错误处理代码中无条件调用 DISCARD;或连接状态与预期不同(从连接池取出的连接上并没有打开 MULTI)。

解决方法

仅在确实打开了 MULTI 时才调用 DISCARD;在代码中跟踪事务状态。在错误处理程序中,调用 DISCARD 之前检查是否有打开的事务。使用库提供的事务封装,由其自动管理状态。保证连接池中的连接状态干净。

在 DBAtlas 中打开 →

同一数据库的其他条目