DBAtlas · Veritabanı operasyon atlası

ERR Number of keys can't be greater than number of args: EVAL/EVALSHA: numkeys exceeds argument count

Redis

Ne 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.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar