ERR Lua script attempted to access nonexistent global variable: Lua script attempted to access a nonexistent global variable (le script Lua a tenté d'accéder à une variable globale inexistante)
RedisQue signifie cette erreur ?
Un script Lua exécuté avec EVAL/EVALSHA a tenté d'accéder à une variable globale non définie. Pour protéger l'environnement de script, Redis restreint la création/la lecture de variables globales et renvoie ce type d'accès comme une erreur.
Cause
Utilisation accidentelle d'une variable globale au lieu d'une variable locale dans le script (oubli du mot-clé local) ; accès à un nom non défini à cause d'une faute de frappe ; ou tentative de conserver un état dans une variable globale. L'environnement Lua isolé (sandbox) de Redis ne le permet pas.
Comment la corriger
Déclarez toutes les variables du script avec local : local x = ... Corrigez les fautes de frappe ; assurez-vous que chaque variable est définie avant son utilisation. Les scripts doivent être sans état ; pour un état persistant, utilisez des clés Redis (KEYS/redis.call), et non des variables Lua globales. Gardez le script court et déterministe.
Autres entrées pour ce moteur
- 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 MULTI calls can not be nestedMULTI calls can not be nested
- 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
- BUSYGROUP Consumer Group name already existsConsumer group already exists