DBAtlas · Атлас эксплуатации баз данных

ERR DISCARD without MULTI: DISCARD without MULTI

Redis

Что это значит?

DISCARD отправлен, когда ни один блок MULTI не был открыт. DISCARD используется только для отмены выполняющейся транзакции; если отменять нечего, возвращается эта ошибка.

Почему возникает?

Вызов DISCARD без MULTI или повторно после того, как транзакция уже была закрыта через EXEC/DISCARD; безусловный вызов DISCARD в коде обработки ошибок; либо состояние соединения отличается от ожидаемого (на соединении, взятом из пула, MULTI не открыт).

Как исправить

Вызывайте DISCARD только тогда, когда MULTI действительно открыт; отслеживайте состояние транзакции в коде. В обработчиках ошибок проверяйте, открыта ли транзакция, прежде чем вызывать DISCARD. Используйте обёртку транзакций вашей библиотеки, чтобы она управляла состоянием автоматически. Гарантируйте чистое состояние в пуле соединений.

Открыть в DBAtlas →

Ещё по этой СУБД