DBAtlas · 数据库运维图谱

ERR Lua script attempted to access nonexistent global variable: Lua script attempted to access a nonexistent global variable(Lua 脚本试图访问不存在的全局变量)

Redis

含义

通过 EVAL/EVALSHA 运行的 Lua 脚本试图访问未定义的全局变量。为保护脚本环境,Redis 限制创建/读取全局变量,并将此类访问作为错误返回。

原因

在脚本中误用了全局变量而非局部变量(忘记写 local 关键字);因拼写错误访问了未定义的名称;或试图在全局变量中保存状态。Redis 的 Lua 沙箱环境不允许这样做。

解决方法

在脚本中用 local 声明所有变量:local x = ... 修正拼写错误;确保每个变量在使用前已定义。脚本应当无状态;持久状态请使用 Redis 键(KEYS/redis.call),而不是全局 Lua 变量。保持脚本简短且具有确定性。

在 DBAtlas 中打开 →

同一数据库的其他条目