ERR Lua script attempted to access nonexistent global variable: Lua script attempted to access a nonexistent global variable
RedisWas bedeutet das?
Ein mit EVAL/EVALSHA ausgeführtes Lua-Skript wollte auf eine nicht definierte globale Variable zugreifen. Zum Schutz der Skriptumgebung schränkt Redis das Anlegen/Lesen globaler Variablen ein und liefert solche Zugriffe als Fehler.
Ursache
Versehentliche Verwendung einer globalen statt einer lokalen Variable im Skript (vergessenes Schlüsselwort local); Zugriff auf einen nicht definierten Namen wegen eines Tippfehlers; oder der Versuch, Zustand in einer globalen Variable zu halten. Die gesandboxte Lua-Umgebung von Redis erlaubt das nicht.
Lösung
Deklariere alle Variablen im Skript mit local: local x = ... Behebe Tippfehler; stelle sicher, dass jede Variable vor der Verwendung definiert ist. Skripte sollten zustandslos sein; nutze für dauerhaften Zustand Redis-Keys (KEYS/redis.call), keine globalen Lua-Variablen. Halte das Skript kurz und deterministisch.
Weitere Einträge zu dieser Datenbank
- 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 (ältere Versionen: Unsupported CONFIG parameter)
- 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)
- ERR DISCARD without MULTIDISCARD without MULTI
- BUSYGROUP Consumer Group name already existsConsumer group already exists