Tabela 'db.x' nie istnieje i Nieznana kolumna: zaimportuj plik SQL
Skrypt FiveM zawala się z „Tabela nie istnieje" lub „Nieznana kolumna"? Zaimportuj jego plik .sql za pomocą HeidiSQL lub mysql CLI, wybierz właściwą bazę danych i uruchom aktualizacje.
Twoja konsola pokazuje błąd bazy danych i skrypt, który go spowodował, przestaje działać:
Table 'fivem.my_table' doesn't exist
Unknown column 'plate' in 'field list'oxmysql pokazuje te same błędy co ER_NO_SUCH_TABLE i ER_BAD_FIELD_ERROR. Ten artykuł obejmuje co one oznaczają i jak naprawić oba: zaimportuj plik SQL skryptu do właściwej bazy danych i uruchom jego aktualizacje.
Co oznaczają dwa błędy
- Tabela nie istnieje. Skrypt prosi o tabelę, która nigdy nie została utworzona w bazie danych, do której podłączony jest twój serwer.
- Nieznana kolumna. Tabela istnieje, ale nie ma kolumny o tej nazwie. Tabela pochodzi ze starszej wersji lub starszego pliku SQL.
W obu przypadkach skrypt jest w porządku. Baza danych nie pasuje do tego, czego oczekuje skrypt.
Krok 1: znajdź właściwą bazę danych
Przed zaimportowaniem czegokolwiek sprawdź, którą bazę danych używa serwer. To jest ostatnia część ciągu połączenia w server.cfg:
set mysql_connection_string "mysql://fivem:yourpassword@localhost/fivem?charset=utf8mb4"Tutaj baza danych to fivem. Jeśli zaimportujesz do innej, na przykład test lub mysql, skrypt nie będzie widzieć tabel. Jeśli samo połączenie się nie powiedzie, zacznij od oxmysql can't connect.
Krok 2: zaimportuj plik .sql
Znajdź plik w folderze skryptu. Jest on nazwany install.sql, database.sql lub po skrypcie. Najpierw otwórz go w edytorze tekstu: jeśli ma linie USE some_database;, upewnij się, że pasuje do twojej bazy danych lub go usuń.
Z HeidiSQL
- Otwórz sesję i połącz.
- W lewym drzewie kliknij na twoją bazę danych (na przykład
fivem), aby była wybrana. - Otwórz menu File i wybierz Run SQL file, następnie wybierz plik
.sql. - Odśwież drzewo za pomocą F5 i nowe tabele pojawiają się pod bazą danych.
Z linią poleceń mysql
mysql -u fivem -p fivem < /path/to/install.sqlDrugi fivem to nazwa bazy danych. Na Windows PowerShell < nie działa w ten sam sposób, więc uruchom go z cmd lub użyj HeidiSQL.
Z phpMyAdmin
Wybierz bazę danych na liście lewej, otwórz kartę Import, wybierz plik i uruchom go.
Ostrzeżenie: utwórz kopię zapasową bazy danych przed zaimportowaniem lub zmianą czegokolwiek. Zrzut trwa sekundy:
mysqldump -u fivem -p fivem > backup.sql.
Krok 3: zastosuj aktualizacje i migracje
Gdy tabela istnieje, ale kolumna brakuje, aktualizacja ją dodała. Skrypty obsługują to na dwa sposoby:
- Plik aktualizacji taki jak
update.sql. Uruchom tylko instrukcje nowsze niż wersja, którą zainstalowałeś, ponieważ uruchomienie starych ponownie zawala się zTable ... already exists. - Linia w dzienniku zmian lub docs z
ALTER TABLEdo uruchomienia.
ALTER TABLE, który dodaje kolumnę, wygląda tak:
ALTER TABLE `my_table` ADD COLUMN `plate` VARCHAR(12) NULL;Niektóre skrypty tworzą lub alterują swoje tabele na własną rękę, gdy się uruchamiają. Jeśli twój to robi, zrestartuj skrypt i obserwuj konsolę zanim cokolwiek robisz ręcznie.
Wskazówka: jeśli błąd pojawia się tylko dla niektórych graczy, spójrz, którą kolumnę wyznacza. Kolumna dodana w aktualizacji często brakuje tylko na serwerach, które uaktualnił skrypt bez uruchomienia aktualizacji.
Wrażliwość na wielkość liter na Linux
Na Linux, MariaDB i MySQL domyślnie traktują nazwy tabel jako wrażliwe na wielkość liter. Tabela utworzona jako Owned_Vehicles nie jest znaleziona przez zapytanie owned_vehicles, nawet jeśli działa na PC z Windows.
Napraw się, aby nazwy się zgadzały, a nie zmieniać ustawienie serwera:
RENAME TABLE `Owned_Vehicles` TO `owned_vehicles`;Przechowuj nazwy tabel małymi literami, gdy je tworzysz, i importuj z pliku z nazwami, które używa skrypt.
Tabele framework'u również brakuje
Jeśli brakująca tabela należy do framework'u, taka jak users, jobs lub owned_vehicles na ESX, lub players na QBCore, bazowy SQL nigdy nie został zaimportowany. Ten plik dostarcza się z framework'em:
- ESX Legacy: plik
.sqlwewnątrzes_extended(i jego opcjonalne zasoby). - QBCore lub QBox: plik
.sqlw pobraniu framework'u. Niektóre przepisy w txAdmin tworzą te tabele dla Ciebie.
Skrypt nie może działać, dopóki tabele samego framework'u nie istnieją, więc najpierw zaimportuj te.
Wyczyść resztki
Po zaimportowaniu zrestartuj skrypt, aby przeczytał nowe tabele:
restart my_scriptJeśli ten sam błąd wraca, przeczytaj go ponownie. Inna nazwa tabeli lub baza danych w wiadomości oznacza, że naprawiłeś jeden problem i dotarłeś do następnego. Gdy zapytanie skryptu jest przyczyną, jak czytać błąd skryptu FiveM pomaga znaleźć plik i linię.
Lista kontrolna
| Objaw | Rozwiązanie |
|---|---|
Table 'db.x' doesn't exist |
Zaimportuj plik .sql skryptu do bazy danych z mysql_connection_string |
| Zaimportowany, ale nadal brakuje | Wybrałeś inną bazę danych; sprawdź nazwę w server.cfg |
Unknown column |
Uruchom aktualizację lub ALTER TABLE dla wersji, którą zainstalowałeś |
Table ... already exists na imporcie |
Uruchomiłeś plik instalacji dwa razy; uruchom tylko instrukcje aktualizacji |
| Działa na Windows, zawala się na Linux | Nazwy tabel są wrażliwe na wielkość liter; zmień nazwę na małe litery |
| Brakuje tabel framework'u | Najpierw zaimportuj ESX, QBCore lub QBox bazy SQL |
Szybkie odpowiedzi
Gdzie jest plik .sql skryptu?
Zwykle w folderze skryptu, obok fxmanifest.lua, jako install.sql, database.sql lub nazwa pasująca do skryptu. Jeśli strona skryptu lub dokumenty wspominają tabelę, ten plik jest tym do zaimportowania.
Czy muszę ponownie zaimportować plik SQL przy aktualizacji skryptu?
Tylko gdy aktualizacja dodaje tabelę lub kolumnę. Szukaj update.sql lub notatki w dzienniku zmian i uruchom tylko nowe instrukcje, ponieważ stare na tabelach, które już istnieją, zawodzą.
Dlaczego tabela istnieje na moim PC, ale nie na moim hoście Linux?
Linux traktuje nazwy tabel jako wrażliwe na wielkość liter. Players i players to dwie różne tabele tam, podczas gdy Windows traktuje je jako te same.

