DBAtlas · Атлас эксплуатации баз данных

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

Redis

Что это значит?

Lua-скрипт, запущенный через EVAL/EVALSHA, попытался обратиться к неопределённой глобальной переменной. Чтобы защитить среду выполнения скриптов, Redis ограничивает создание/чтение глобальных переменных и возвращает такое обращение как ошибку.

Почему возникает?

Случайное использование глобальной переменной вместо локальной в скрипте (забыто ключевое слово local); обращение к неопределённому имени из-за опечатки; либо попытка хранить состояние в глобальной переменной. Изолированная среда Lua в Redis этого не допускает.

Как исправить

Объявляйте все переменные в скрипте через local: local x = ... Исправьте опечатки; убедитесь, что каждая переменная определена до использования. Скрипты должны быть без состояния; для постоянного состояния используйте ключи Redis (KEYS/redis.call), а не глобальные переменные Lua. Делайте скрипт коротким и детерминированным.

Открыть в DBAtlas →

Ещё по этой СУБД