DBAtlas · Veritabanı operasyon atlası

ERR Lua script attempted to access nonexistent global variable: Lua script attempted to access a nonexistent global variable

Redis

Ne demek?

EVAL/EVALSHA ile çalıştırılan Lua betiği, tanımlı olmayan bir global değişkene erişmeye çalıştı. Redis, betik ortamını korumak için genel değişken oluşturmayı/okumayı kısıtlar ve bu erişimi hata olarak döndürür.

Neden olur?

Betikte yerel (local) yerine yanlışlıkla global değişken kullanmak (local anahtar kelimesini unutmak); yazım hatası nedeniyle tanımsız bir isme erişmek; ya da global bir değişken üzerinden durum saklamaya çalışmak. Redis'in korumalı Lua ortamı bunlara izin vermez.

Nasıl çözülür?

Betikteki tüm değişkenleri local ile tanımlayın: local x = ... Yazım hatalarını düzeltin; kullanmadan önce her değişkenin tanımlandığından emin olun. Betikler durumsuz (stateless) olmalı; kalıcı durum için Redis anahtarlarını (KEYS/redis.call) kullanın, global Lua değişkenleri değil. Betiği kısa ve deterministik tutun.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar