ERR MULTI calls can not be nested: MULTI calls can not be nested
RedisQue signifie cette erreur ?
MULTI a été envoyé de nouveau alors qu'un bloc MULTI (transaction) était déjà ouvert. Redis ne prend pas en charge les blocs de transaction imbriqués ; un seul MULTI peut être actif à la fois.
Cause
Logique applicative qui démarre un nouveau MULTI sans fermer le précédent avec EXEC/DISCARD ; réutilisation de la même connexion d'un pool sans réinitialiser correctement l'état de transaction ; ou wrapper de bibliothèque qui appelle MULTI deux fois à votre insu.
Comment la corriger
Fermez chaque bloc MULTI par un seul EXEC (ou DISCARD pour annuler) et n'ouvrez un nouveau bloc qu'après avoir terminé le précédent. Séparez clairement le début et la fin de transaction dans le flux du code. Assurez-vous qu'aucune transaction ne reste ouverte avant de rendre une connexion au pool. Si une logique imbriquée est nécessaire, envisagez d'effectuer l'opération atomique avec un script Lua (EVAL).
Autres entrées pour ce moteur
- ERR Can't save in background: fork failedBackground save failed: fork failed (échec de la sauvegarde en arrière-plan : échec du fork)
- NOPROTO unsupported protocol versionUnsupported RESP protocol version
- ERR Unknown option or number of arguments for CONFIG SETUnknown option or number of arguments for CONFIG SET (older versions: Unsupported CONFIG parameter) (option ou nombre d'arguments inconnu pour CONFIG SET)
- ERR Lua script attempted to access nonexistent global variableLua script attempted to access a nonexistent global variable (le script Lua a tenté d'accéder à une variable globale inexistante)
- ERR unknown commandUnknown command
- TRYAGAIN Multiple keys request during rehashing of slotMultiple keys request during rehashing of slot (cluster) (requête multi-clés pendant la migration d'un slot)
- ERR DISCARD without MULTIDISCARD without MULTI