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 = ... タイプミスを修正し、すべての変数が使用前に定義されていることを確認する。スクリプトはステートレスにする。永続的な状態にはグローバルな Lua 変数ではなく Redis のキー (KEYS/redis.call) を使用する。スクリプトは短く決定的に保つ。

DBAtlas で開く →

同じデータベースの他の項目