DBAtlas · Atlas für Datenbankbetrieb

ERR Lua script attempted to access nonexistent global variable: Lua script attempted to access a nonexistent global variable

Redis

Was 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.

In DBAtlas öffnen →

Weitere Einträge zu dieser Datenbank