ERR Lua script attempted to access nonexistent global variable: Lua script attempted to access a nonexistent global variable (el script Lua intentó acceder a una variable global inexistente)
Redis¿Qué significa?
Un script Lua ejecutado con EVAL/EVALSHA intentó acceder a una variable global no definida. Para proteger el entorno de scripting, Redis restringe la creación/lectura de variables globales y devuelve ese acceso como error.
¿Por qué ocurre?
Usar por accidente una variable global en lugar de una local en el script (olvidar la palabra clave local); acceder a un nombre no definido por una errata; o intentar mantener estado en una variable global. El entorno Lua aislado (sandbox) de Redis no lo permite.
Cómo solucionarlo
Declare todas las variables del script con local: local x = ... Corrija las erratas; asegúrese de que cada variable esté definida antes de usarla. Los scripts deben ser sin estado; para un estado persistente use claves de Redis (KEYS/redis.call), no variables globales de Lua. Mantenga el script corto y determinista.
Más entradas de este motor
- 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) (opción o número de argumentos desconocidos para 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) (solicitud de varias claves durante el rehashing del slot)
- ERR DISCARD without MULTIDISCARD without MULTI
- BUSYGROUP Consumer Group name already existsConsumer group already exists