ERR Number of keys can't be greater than number of args: EVAL/EVALSHA: numkeys exceeds argument count(numkeys が引数の数を超えている)
Redis意味
Lua スクリプト (EVAL/EVALSHA/FCALL) の実行時に、指定されたキー数 (numkeys) がコマンドに実際に渡された引数の数より大きい。KEYS と ARGV の配列を分割できないため、Redis はコマンドを拒否する。
原因
EVAL の構文は 'EVAL script numkeys key [key ...] arg [arg ...]' である。numkeys の値が誤って計算された (大きすぎる値に設定された)、または想定されたキーがコマンドに追加されていない。よくあるプログラミングの誤り。
対処方法
numkeys をコマンドに実際に渡すキーの数と正確に一致させる。numkeys が自動計算されるよう、クライアントライブラリの EVAL ラッパー (通常 KEYS と ARGV を別々のリストとして受け取る) を使用する。スクリプトを呼び出す際は、キーを KEYS に、その他のパラメータを ARGV に正しく分ける。
同じデータベースの他の項目
- ERR Background save already in progressBackground save already in progress(バックグラウンド保存が既に進行中)
- ERR bit offset is not an integer or out of rangeBit offset is not an integer or out of range(ビットオフセットが整数でないか範囲外)
- ERR Protocol error: invalid multibulk lengthProtocol error: invalid multibulk length(プロトコルエラー: 無効な multibulk 長)
- ERR WATCH inside MULTI is not allowedWATCH inside MULTI is not allowed(MULTI 内の WATCH は許可されない)
- ERR WAIT cannot be used with replica instancesWAIT cannot be used with replica instances(WAIT はレプリカインスタンスでは使用できない)
- ERR Background append only file rewriting already in progressAOF rewrite already in progress(AOF 書換えが既に進行中)
- IOERR error or timeout reading from target instanceMIGRATE: I/O error or timeout to target(ターゲットへの I/O エラーまたはタイムアウト)