ERR DISCARD without MULTI: DISCARD without MULTI
RedisЧто это значит?
DISCARD отправлен, когда ни один блок MULTI не был открыт. DISCARD используется только для отмены выполняющейся транзакции; если отменять нечего, возвращается эта ошибка.
Почему возникает?
Вызов DISCARD без MULTI или повторно после того, как транзакция уже была закрыта через EXEC/DISCARD; безусловный вызов DISCARD в коде обработки ошибок; либо состояние соединения отличается от ожидаемого (на соединении, взятом из пула, MULTI не открыт).
Как исправить
Вызывайте DISCARD только тогда, когда MULTI действительно открыт; отслеживайте состояние транзакции в коде. В обработчиках ошибок проверяйте, открыта ли транзакция, прежде чем вызывать DISCARD. Используйте обёртку транзакций вашей библиотеки, чтобы она управляла состоянием автоматически. Гарантируйте чистое состояние в пуле соединений.
Ещё по этой СУБД
- ERR Lua script attempted to access nonexistent global variableLua script attempted to access a nonexistent global variable
- ERR unknown commandUnknown command
- TRYAGAIN Multiple keys request during rehashing of slotMultiple keys request during rehashing of slot (cluster)
- BUSYGROUP Consumer Group name already existsConsumer group already exists
- NOGROUP No such key or consumer groupNo such key or consumer group in stream
- NOTBUSY No scripts in execution right nowNo scripts in execution right now
- DENIED Redis is running in protected modeRedis is running in protected mode