DBAtlas · 数据库运维图谱

ERR MULTI calls can not be nested: MULTI calls can not be nested(MULTI 调用不能嵌套)

Redis

含义

在已打开 MULTI(事务)块的情况下再次发送了 MULTI。Redis 不支持嵌套事务块;同一时间只能有一个 MULTI 处于活动状态。

原因

应用逻辑在未用 EXEC/DISCARD 关闭前一个 MULTI 的情况下启动了新的 MULTI;从连接池复用同一连接时未正确重置事务状态;或库封装在不知情的情况下调用了两次 MULTI。

解决方法

每个 MULTI 块都用一个 EXEC(或用 DISCARD 取消)关闭,且只在前一个块结束后才打开新块。在代码流程中明确区分事务的开始和结束。确保在将连接归还连接池之前没有遗留未结束的事务。如果需要嵌套逻辑,考虑用 Lua 脚本(EVAL)完成原子操作。

在 DBAtlas 中打开 →

同一数据库的其他条目