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:
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:
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
- Öffne deine Session und verbinde dich.
- In dem linken Baum, klicke auf deine Datenbank (zum Beispiel
fivem), damit sie die ausgewählte ist. - Öffne das File-Menü und wähle Run SQL file, dann wähle die
.sql-Datei. - Aktualisiere den Baum mit F5, und die neuen Tabellen erscheinen unter der Datenbank.
Mit der mysql-Befehlszeile
mysql -u fivem -p fivem < /path/to/install.sqlDie 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 zuTable ... already existsführt. - Eine Zeile im Changelog oder den Docs mit dem
ALTER TABLEzum Ausführen.
Ein ALTER TABLE, das eine Spalte hinzufügt, sieht so aus:
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:
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 darines_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:
restart my_scriptWenn 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.

