Table 'db.x' doesn't exist und Unknown column: Importiere die SQL-Datei

Ein FiveM-Script schlägt mit Table doesn't exist oder Unknown column fehl? Importiere seine .sql-Datei mit HeidiSQL oder der mysql CLI, wähle die richtige Datenbank und führe die Updates aus.

Deine Konsole zeigt einen Datenbankfehler, und das Script, das ihn verursacht hat, stoppt zu funktionieren:

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

oxmysql zeigt die gleichen Fehler wie ER_NO_SUCH_TABLE und ER_BAD_FIELD_ERROR. Dieser Artikel behandelt, was sie bedeuten und wie man beide behebt: Importiere die SQL-Datei des Scripts in die richtige Datenbank und führe ihre Updates aus.

Was die beiden Fehler bedeuten

  • Table doesn't exist. Das Script fragt nach einer Tabelle, die nie in der Datenbank erstellt wurde, mit der sich dein Server verbindet.
  • Unknown column. Die Tabelle existiert, aber sie hat keine Spalte mit diesem Namen. Die Tabelle kam von einer älteren Version oder einer älteren SQL-Datei.

In beiden Fällen ist das Script in Ordnung. Die Datenbank stimmt nicht mit dem überein, was das Script erwartet.

Schritt 1: Finde die richtige Datenbank

Bevor du etwas importierst, überprüfe, welche Datenbank der Server verwendet. Es ist der letzte Teil der Verbindungszeichenfolge in server.cfg:

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

Hier ist die Datenbank fivem. Wenn du in eine andere importierst, zum Beispiel test oder mysql, sieht das Script die Tabellen nicht. Wenn die Verbindung selbst fehlschlägt, beginne mit oxmysql kann nicht verbinden.

Schritt 2: Importiere die .sql-Datei

Finde die Datei im Script-Ordner. Sie ist benannt als install.sql, database.sql oder nach dem Script. Öffne sie zuerst in einem Texteditor: Wenn sie eine USE some_database;-Zeile hat, stelle sicher, dass sie mit deiner Datenbank übereinstimmt oder entferne sie.

Mit HeidiSQL

  1. Öffne deine Session und verbinde dich.
  2. In dem linken Baum, klicke auf deine Datenbank (zum Beispiel fivem), damit sie die ausgewählte ist.
  3. Öffne das File-Menü und wähle Run SQL file, dann wähle die .sql-Datei.
  4. Aktualisiere den Baum mit F5, und die neuen Tabellen erscheinen unter der Datenbank.

Mit der mysql-Befehlszeile

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

Die zweite fivem ist der Datenbankname. Auf Windows PowerShell funktioniert < nicht auf die gleiche Weise, daher führe es von cmd aus oder verwende HeidiSQL.

Mit phpMyAdmin

Wähle die Datenbank in der linken Liste, öffne den Import-Tab, wähle die Datei und führe sie aus.

Achtung: Sichere die Datenbank, bevor du etwas importierst oder änderst. Ein Dump dauert Sekunden: mysqldump -u fivem -p fivem > backup.sql.

Schritt 3: Wende Updates und Migrationen an

Wenn die Tabelle existiert, aber eine Spalte fehlt, hat ein Update sie hinzugefügt. Scripts handhaben dies auf zwei Wegen:

  • Eine Update-Datei wie update.sql. Führe nur die Statements aus, die neuer sind als die Version, die du installiert hast, da das Ausführen der alten Statements erneut zu Table ... already exists führt.
  • Eine Zeile im Changelog oder den Docs mit dem ALTER TABLE zum Ausführen.

Ein ALTER TABLE, das eine Spalte hinzufügt, sieht so aus:

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

Einige Scripts erstellen oder ändern ihre Tabellen von selbst, wenn sie starten. Wenn deins das tut, starte das Script neu und überwache die Konsole, bevor du etwas von Hand machst.

Tipp: Wenn der Fehler nur für einige Spieler erscheint, schaue, welche Spalte er nennt. Eine Spalte, die in einem Update hinzugefügt wurde, fehlt oft nur auf Servern, die das Script aktualisiert haben, ohne das Update auszuführen.

Groß-/Kleinschreibung-Empfindlichkeit auf Linux

Auf Linux, MariaDB und MySQL behandeln Tabellennamen standardmäßig als Groß-/Kleinschreibung-sensitiv. Eine als Owned_Vehicles erstellte Tabelle wird nicht durch eine Abfrage nach owned_vehicles gefunden, obwohl es auf einem Windows PC funktioniert.

Die Behebung ist, dass Namen übereinstimmen, nicht um die Servereinstellung zu ändern:

sql
RENAME TABLE `Owned_Vehicles` TO `owned_vehicles`;

Halte Tabellennamen in Kleinbuchstaben, wenn du sie erstellst, und importiere aus einer Datei mit den Namen, die das Script verwendet.

Die Framework-Tabellen fehlen auch

Wenn die fehlende Tabelle zum Framework gehört, wie users, jobs oder owned_vehicles auf ESX oder players auf QBCore, wurde die Basis-SQL nie importiert. Diese Datei wird mit dem Framework ausgeliefert:

  • ESX Legacy: die .sql-Datei darin es_extended (und seine optionalen Ressourcen).
  • QBCore oder QBox: die .sql-Datei in der Framework-Download. Einige Rezepte in txAdmin erstellen diese Tabellen für dich.

Ein Script kann nicht funktionieren, bis die eigenen Tabellen des Frameworks vorhanden sind, daher importiere diese zuerst.

Räume die Reste auf

Nach dem Importieren, starte das Script neu, damit es die neuen Tabellen liest:

text
restart my_script

Wenn der gleiche Fehler zurückkommt, lies ihn erneut. Ein anderer Tabellenname oder Datenbankname in der Nachricht bedeutet, dass du ein Problem behoben hast und das nächste erreicht hast. Wenn ein Script-Query die Ursache ist, wie man einen FiveM-Script-Fehler liest hilft dir, die Datei und Zeile zu finden.

Checkliste

Symptom Behebung
Table 'db.x' doesn't exist Importiere die .sql-Datei des Scripts in die Datenbank aus mysql_connection_string
Importiert, aber immer noch fehlend Du hast eine andere Datenbank ausgewählt; überprüfe den Namen in server.cfg
Unknown column Führe das Update oder ALTER TABLE für die Version, die du installiert hast, aus
Table ... already exists beim Import Du hast die Install-Datei zweimal ausgeführt; führe nur die Update-Statements aus
Funktioniert auf Windows, schlägt auf Linux fehl Tabellennamen sind Groß-/Kleinschreibung-sensitiv; benenne zu Kleinbuchstaben um
Framework-Tabellen fehlen Importiere die ESX, QBCore oder QBox Base-SQL zuerst

Kurze Antworten

Wo ist die .sql-Datei eines Scripts?

Normalerweise im Script-Ordner, neben fxmanifest.lua, als install.sql, database.sql oder ein mit dem Script übereinstimmender Name. Wenn die Script-Seite oder Docs eine Tabelle erwähnen, ist diese Datei die zu importierende.

Muss ich die SQL-Datei erneut importieren, wenn ich ein Script aktualisiere?

Nur wenn die Aktualisierung eine Tabelle oder eine Spalte hinzufügt. Suche nach einer update.sql oder einem Changelog-Hinweis und führe nur die neuen Statements aus, da die alten bei bereits vorhandenen Tabellen fehlschlagen.

Warum existiert eine Tabelle auf meinem PC, aber nicht auf meinem Linux-Host?

Linux behandelt Tabellennamen als Groß-/Kleinschreibung-sensitiv. Players und players sind zwei verschiedene Tabellen dort, während Windows sie als gleich behandelt.

Scripts ohne dieses Problem

Item Creator V2Erstelle nutzbare Items mit Animationen, Props, Effekten und mehr — ganz ohne Code.Script ansehen →Shop CreatorBau einen Shop in unter einer Minute — Besitzer, Angestellte, Tresore und Überfälle inklusive.Script ansehen →

Weiterlesen