attempt to concatenate a nil value
Bir script, eksik olan bir değerden mesaj kurmaya çalıştı — genelde bir oyuncu adı ya da boş bıraktığın bir yapılandırma ayarı.
Önce şunu yap
O script'in config dosyasında hiç doldurulmamış bir ayar var mı kontrol et.
Ne anlama gelir
.. operatörü, ne metin ne sayı olan bir şeyle kullanıldı. Mesaj onu adlandırır: attempt to concatenate a nil value (local 'name').
Lua sayıları sorunsuz birleştirir, o yüzden bu neredeyse her zaman nil'dir, ve neredeyse her zaman bir print, bir bildirim, bir sohbet mesajı ya da bir sorgu için kurulan bir metnin içindedir.
Neden olur
Ne sıklıkla doğru cevap olduğuna göre sıralı.
- 1
Bir mesajda eksik bir tablo alanı
Oyuncu nesnesinin
namealanı olmadığı ya da nesnenin tamamı nil olduğu hâlde'Hoş geldin ' .. player.name. Eksik veri ilk olarak mesajı kurarken ısırır. - 2
Hiçbir şey döndürmeyen bir fonksiyon
GetPlayerName(src), çoktan çıkmış bir oyuncu için nil döndürür, ve sonuç doğrudan bir kayıt satırına gider. - 3
Hiç ayarlanmamış bir config değeri
Kullanıcının hiç doldurmadığı bir config'te webhook boş bırakılmışken
Config.Webhook .. '?wait=true'. - 4
SQL'i birleştirmeyle kurmak
Ki bu aynı zamanda bir enjeksiyon deliğidir, yani bu hata dikkatini oraya çekerek sana iyilik yapıyor.
Hangisinin seninki olduğu nasıl anlaşılır
İşleneni geçici olarak tostring() içine al — hata kaybolur ve mesaj, eksik değerin tam olduğu yerde nil yazar, ki bu sana hiç tahmin etmeden hangisi olduğunu söyler.
Nereye bakmalı
Adı geçen satır. İfadenin tamamını oku: uzun bir birleştirmenin beş işleneni olabilir ve yalnızca biri nil'dir.
Nasıl düzeltilir
Değere varsayılan ver, ya da %s içinde nil'e tahammül eden string.format kullan:
local name = GetPlayerName(src) or 'bilinmiyor'
print(('oyuncu %s şunu aldı: %s'):format(name, item or 'hiçbir şey'))SQL için birleştirme yerine yer tutucu kullan:
MySQL.query('SELECT * FROM users WHERE identifier = ?', { identifier })Hâlâ kendi kodunda mı takıldın?
Bu sayfa, bu hatanın genelde ne anlama geldiğini anlatır. Konsolunu Server Fixer'a yapıştır; içindeki her şeyi sıraya dizer ve önce ne yapman gerektiğini söyler. Kendin uğraşmak istemiyorsan ORBIE script'i onarır ve kaynağı sunucuna atmaya hazır geri verir.
bug_reportServer Fixer'ı açBu tür bir hata için Script Optimizer script'i okur ve bunun arkasındaki kodu onarır.