ERR Number of keys can't be greater than number of args: EVAL/EVALSHA: numkeys exceeds argument count
RedisNe demek?
Bir Lua betiği çalıştırılırken (EVAL/EVALSHA/FCALL), belirtilen anahtar sayısı (numkeys), komuta gerçekte verilen argüman sayısından fazla. Redis, KEYS ve ARGV dizilerini ayıramadığı için komutu reddediyor.
Neden olur?
EVAL komutunun sözdizimi 'EVAL script numkeys key [key ...] arg [arg ...]' biçimindedir. numkeys değeri yanlış hesaplanmış (gereğinden büyük verilmiş) ya da beklenen anahtarlar komuta hiç eklenmemiş. Sık görülen bir programlama hatasıdır.
Nasıl çözülür?
numkeys değerini, komuta gerçekten geçirilen anahtar sayısıyla birebir eşitleyin. İstemci kütüphanenizin EVAL sarmalayıcısını (genellikle KEYS ve ARGV'yi ayrı listeler olarak alır) kullanarak numkeys'i otomatik hesaplatın. Betiği çağırırken anahtarları KEYS, diğer parametreleri ARGV olarak doğru bölün.
Aynı motorda diğer kayıtlar
- 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
- ERR WATCH inside MULTI is not allowedWATCH inside MULTI is not allowed
- ERR WAIT cannot be used with replica instancesWAIT cannot be used with replica instances
- ERR Background append only file rewriting already in progressAOF rewrite already in progress
- IOERR error or timeout reading from target instanceMIGRATE: I/O error or timeout to target