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ć:

text
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:

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

  1. Otwórz sesję i połącz.
  2. W lewym drzewie kliknij na twoją bazę danych (na przykład fivem), aby była wybrana.
  3. Otwórz menu File i wybierz Run SQL file, następnie wybierz plik .sql.
  4. Odśwież drzewo za pomocą F5 i nowe tabele pojawiają się pod bazą danych.

Z linią poleceń mysql

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

Drugi 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ę z Table ... already exists.
  • Linia w dzienniku zmian lub docs z ALTER TABLE do uruchomienia.

ALTER TABLE, który dodaje kolumnę, wygląda tak:

sql
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:

sql
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 .sql wewnątrz es_extended (i jego opcjonalne zasoby).
  • QBCore lub QBox: plik .sql w 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:

text
restart my_script

Jeś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.

Skrypty bez tego problemu

Item Creator V2Twórz używalne przedmioty z animacjami, propami, efektami i nie tylko — bez pisania kodu.Zobacz skrypt →Shop CreatorZbuduj sklep w niecałą minutę — właściciele, pracownicy, sejfy i napady w zestawie.Zobacz skrypt →

Czytaj dalej