THE ORB
Studio başlatılıyor

SQL sözdizimi hatası

Bir script veritabanına anlayamadığı bir istek gönderdi.

groupsO özellik çalışmayı bırakıyorcodeGeliştirici gerektirir

Önce şunu yap

Bu, script'teki bir hata. Bu satırla birlikte yazana bildir.

bug_reportBunun yerine tüm konsolunu yapıştır

Ne anlama gelir

MySQL ifadeyi reddetti. Mesaj, pes ettiği noktadan başlayan metni alıntılar, ki bu en kullanışlı kısımdır: ne alıntılanıyorsa, sorun onda ya da hemen ondan öncededir.

Neden olur

Ne sıklıkla doğru cevap olduğuna göre sıralı.

  1. 1

    Parametre yerine metin araya sokma

    SQL'i .. ile ve tırnak içeren bir değerle kurmak. Bu aynı zamanda bir SQL enjeksiyonu deliğidir, yani düzeltmenin iki nedeni var.

  2. 2

    Sütun adı olarak kullanılan ayrılmış bir kelime

    rank, groups, key, order, read. MySQL 8, rankı ayrılmış kelime olarak ekledi, ki bu da bir gecede pek çok eski FiveM şemasını bozdu.

  3. 3

    Sonda kalan bir virgül

    SELECT a, b, FROM users — genelde listeden bir sütun silindikten sonra kalır.

  4. 4

    Yer tutucu sayısı uyuşmuyor

    Değerden çok ?, ya da hiç sağlanmamış adlandırılmış bir parametre. Bazı sürücüler bunu bağlama hatası yerine sözdizimi hatası olarak bildirir.

  5. 5

    Tek sorguda birden fazla ifade

    oxmysql, sürücü bunun için yapılandırılmadıkça tek bir çağrıda ; ile ayrılmış iki ifadeyi çalıştırmaz.

Hangisinin seninki olduğu nasıl anlaşılır

Hatadaki alıntılanmış parçayı oku. Sonra son SQL'i yazdır ve bir MySQL istemcisinde elle çalıştır — orada da aynı şekilde başarısız olursa sorun ifadedir; başarılı olursa parametrelerdir.

Nereye bakmalı

Kaynaktaki sorgu metni, ve bağlanan değerler.

Nasıl düzeltilir

Her zaman yer tutucu kullan. Hem sözdizimi sorununu hem enjeksiyon sorununu aynı anda çözer:

-- yanlış
MySQL.query('SELECT * FROM users WHERE name = "' .. name .. '"')

-- doğru
MySQL.query('SELECT * FROM users WHERE name = ?', { name })

Ayrılmış kelimeleri ters tırnağa al:

SELECT `rank` FROM users WHERE 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 buna yol açan sorgu kalıplarını yakalar.

Bununla birlikte gelen hatalar