'db.x' tablosu mevcut değil ve Bilinmeyen sütun: SQL dosyasını içeri aktarın

FiveM betiği Tablo mevcut değil veya Bilinmeyen sütun ile başarısız mı oluyor? HeidiSQL veya mysql CLI ile .sql dosyasını içeri aktarın, doğru veritabanını seçin ve güncellemeleri çalıştırın.

Konsolunuz bir veritabanı hatası gösterir ve buna neden olan betik çalışmayı durdurur:

text
Table 'fivem.my_table' doesn't exist
Unknown column 'plate' in 'field list'

oxmysql ER_NO_SUCH_TABLE ve ER_BAD_FIELD_ERROR olarak aynı hataları gösterir. Bu makale, ne anlama geldiklerini ve her ikisini nasıl düzeltileceğini kapsar: betiğin SQL dosyasını doğru veritabanına içeri aktarın ve güncellemelerini çalıştırın.

İki hatanın anlamı

  • Tablo mevcut değil. Betik, sunucunuzun bağlı olduğu veritabanında hiçbir zaman oluşturulmayan bir tabloyu ister.
  • Bilinmeyen sütun. Tablo var, ancak bu adda bir sütunu yok. Tablo eski bir sürümden veya eski bir SQL dosyasından geldi.

Her iki durumda da betik iyidir. Veritabanı, betiğin beklediği şeyle eşleşmiyor.

Adım 1: doğru veritabanını bulun

Herhangi bir şey içeri aktarmadan önce, sunucunun kullandığı veritabanını kontrol edin. server.cfg dosyasındaki bağlantı dizesinin son kısmıdır:

cfg
set mysql_connection_string "mysql://fivem:yourpassword@localhost/fivem?charset=utf8mb4"

Burada veritabanı fivem olur. Başka bir veritabanına, örneğin test veya mysql içine aktarırsanız, betik tabloları görmez. Bağlantı kendisi başarısız olursa, oxmysql bağlanamıyor bölümü ile başlayın.

Adım 2: .sql dosyasını içeri aktarın

Dosyayı betiğin klasöründe bulun. install.sql, database.sql veya betiğin ardından adlandırılır. Önce bir metin editöründe açın: USE some_database; satırı varsa, veritabanınızla eşleşip eşleşmediğini kontrol edin veya kaldırın.

HeidiSQL ile

  1. Oturumunuzu açın ve bağlanın.
  2. Sol ağaçta, veritabanınıza tıklayın (örneğin fivem), böylece seçilen olandır.
  3. File menüsünü açın ve Run SQL file öğesini seçin, sonra .sql dosyasını seçin.
  4. F5 ile ağacı yenileyin ve yeni tablolar veritabanının altında görünür.

mysql komut satırı ile

bash
mysql -u fivem -p fivem < /path/to/install.sql

İkinci fivem veritabanı adıdır. Windows PowerShell'de, < aynı şekilde çalışmaz, bu nedenle cmd'den çalıştırın veya HeidiSQL kullanın.

phpMyAdmin ile

Veritabanını sol listeye seçin, Import sekmesini açın, dosyayı seçin ve çalıştırın.

Dikkat: içeri aktarmadan veya herhangi bir şeyi değiştirmeden önce veritabanını yedekleyin. Bir döküm saniyeler alır: mysqldump -u fivem -p fivem > backup.sql.

Adım 3: güncellemeleri ve geçişleri uygulayin

Tablo var ancak bir sütun eksik olduğunda, bir güncelleme onu ekledi. Betikler bunu iki şekilde işler:

  • update.sql gibi bir güncelleme dosyası. Yalnızca yüklediğiniz sürümden daha yeni ifadeleri çalıştırın, çünkü eskiler yeniden çalıştırmak Table ... already exists ile başarısız olacaktır.
  • Değişiklik günlüğü veya belgelerindeki bir satır çalıştırmak için ALTER TABLE ile birlikte.

Bir sütun ekleyen bir ALTER TABLE şöyle görünür:

sql
ALTER TABLE `my_table` ADD COLUMN `plate` VARCHAR(12) NULL;

Bazı betikler başladıklarında tablolarını veya değiştirirler. Sizinkinin yapması durumunda, betiği yeniden başlatın ve elle bir şey yapmadan önce konsolu izleyin.

İpucu: hata yalnızca bazı oyuncular için görünüyorsa, hangi sütunu adlandırdığına bakın. Bir güncellemede eklenen bir sütun genellikle güncellemeleri çalıştırmadan betiği yükselten sunucularda eksikdir.

Linux'ta büyük/küçük harf duyarlılığı

Linux'ta, MariaDB ve MySQL varsayılan olarak tablo adlarını büyük/küçük harfe duyarlı olarak davranır. Owned_Vehicles olarak oluşturulan bir tablo, Windows PC'de çalışmasına rağmen, owned_vehicles sorgusu tarafından bulunamaz.

Çözüm, sunucu ayarını değiştirmek değil, adları eşleştirmektir:

sql
RENAME TABLE `Owned_Vehicles` TO `owned_vehicles`;

Onları oluşturduğunuzda tablo adlarını küçük harflerde tutun ve betiğin kullandığı adlarla bir dosyadan içeri aktarın.

Çerçeve tabloları da eksik

Eksik tablo çerçeveye aitse, ESX'te users, jobs veya owned_vehicles gibi veya QBCore'da players, temel SQL hiçbir zaman içeri aktarılmadı. Bu dosya çerçeveyle birlikte gönderilir:

  • ESX Legacy: es_extended içindeki .sql dosyası (ve isteğe bağlı kaynakları).
  • QBCore veya QBox: çerçeve indirmesindeki .sql dosyası. txAdmin'deki bazı tarifler bu tabloları sizin için oluşturur.

Çerçevenin kendi tabloları mevcut olana kadar bir betik çalışamaz, bu nedenle önce bunları içeri aktarın.

Artıkları temizleyin

İçeri aktardıktan sonra, betiği yeniden başlatın, böylece yeni tabloları okusu:

text
restart my_script

Aynı hata geri gelirse, tekrar okuyun. İletideki farklı bir tablo adı veya veritabanı adı, bir sorunu düzelttiğiniz ve sonrakine ulaştığınız anlamına gelir. Betik sorgusu nedeni olduğunda, FiveM betik hatası nasıl okunur dosya ve satırı bulmanıza yardımcı olur.

Kontrol listesi

Belirti Çözüm
Table 'db.x' doesn't exist Betiğin .sql dosyasını mysql_connection_string veritabanına içeri aktarın
İçeri aktarıldı, ancak yine eksik Başka bir veritabanı seçtiniz; server.cfg adını kontrol edin
Unknown column Yüklediğiniz sürüm için güncellemeyi veya ALTER TABLE öğesini çalıştırın
İçeri aktarmada Table ... already exists Yükleme dosyasını iki kez çalıştırdınız; yalnızca güncelleme ifadeleri çalıştırın
Windows'ta çalışır, Linux'ta başarısız olur Tablo adları büyük/küçük harfe duyarlıdır; küçük harflere yeniden adlandırın
Çerçeve tabloları eksik Önce ESX, QBCore veya QBox temel SQL'sini içeri aktarın

Kısa yanıtlar

Bir betiğin .sql dosyası nerede?

Genellikle betiğin klasöründe, fxmanifest.lua yanında, install.sql, database.sql veya betiği eşleştiren bir ad olarak. Betiğin sayfası veya belgeleri bir tablo bahsedirse, bu, içeri aktarılacak dosyadır.

Bir betiği güncellerken SQL dosyasını tekrar içeri aktarmam gerekir mi?

Yalnızca güncelleme bir tablo veya bir sütun eklediğinde. update.sql veya bir değişiklik günlüğü notu arayın ve yalnızca yeni ifadeleri çalıştırın, çünkü eski olanlar zaten var olan tablolarda başarısız olacaktır.

Neden bir tablo PC'mde var ancak Linux barındırıcısında değil?

Linux tablo adlarını büyük/küçük harfe duyarlı davranır. Players ve players orada iki farklı tablo, Windows ise onları aynı muamele eder.

Bu sorunu yaşatmayan scriptler

Item Creator V2Animasyonlar, proplar, efektler ve daha fazlasıyla kullanılabilir eşyalar oluşturun — kod yazmadan.Scripti gör →Shop CreatorBir dakikadan kısa sürede dükkân kurun — sahipler, çalışanlar, kasalar ve soygunlar dahil.Scripti gör →

Okumaya devam edin