La table db.x n'existe pas et Unknown column : importer le fichier SQL
Un script FiveM échoue avec Table doesn't exist ou Unknown column. Importez son fichier .sql avec HeidiSQL ou la CLI mysql, choisissez la bonne base de données, et exécutez les mises à jour.
Votre console affiche une erreur de base de données, et le script qui l'a provoquée arrête de fonctionner :
Table 'fivem.my_table' doesn't exist
Unknown column 'plate' in 'field list'oxmysql affiche les mêmes erreurs que ER_NO_SUCH_TABLE et ER_BAD_FIELD_ERROR. Cet article couvre ce qu'elles signifient et comment corriger les deux : importer le fichier SQL du script dans la bonne base de données, et exécuter ses mises à jour.
Ce que les deux erreurs signifient
- La table n'existe pas. Le script demande une table qui n'a jamais été créée dans la base de données à laquelle votre serveur est connecté.
- Colonne inconnue. La table existe, mais elle n'a pas de colonne avec ce nom. La table provient d'une version plus ancienne, ou d'un fichier SQL plus ancien.
Dans les deux cas le script va bien. La base de données ne correspond pas à ce que le script attend.
Étape 1 : trouver la bonne base de données
Avant d'importer quoi que ce soit, vérifiez quelle base de données le serveur utilise. C'est la dernière partie de la chaîne de connexion dans server.cfg :
set mysql_connection_string "mysql://fivem:yourpassword@localhost/fivem?charset=utf8mb4"Ici la base de données est fivem. Si vous importez dans une autre, par exemple test ou mysql, le script ne verra pas les tables. Si la connexion elle-même échoue, commencez par oxmysql can't connect.
Étape 2 : importer le fichier .sql
Trouvez le fichier dans le dossier du script. Il s'appelle install.sql, database.sql, ou d'après le script. Ouvrez-le d'abord dans un éditeur de texte : s'il a une ligne USE some_database;, assurez-vous qu'elle correspond à votre base de données ou supprimez-la.
Avec HeidiSQL
- Ouvrez votre session et connectez-vous.
- Dans l'arborescence de gauche, cliquez sur votre base de données (par exemple
fivem), de sorte qu'elle soit sélectionnée. - Ouvrez le menu File et choisissez Run SQL file, puis choisissez le fichier
.sql. - Rafraîchissez l'arborescence avec F5, et les nouvelles tables apparaissent sous la base de données.
Avec la ligne de commande mysql
mysql -u fivem -p fivem < /path/to/install.sqlLe deuxième fivem est le nom de la base de données. Sur Windows PowerShell, < ne fonctionne pas de la même façon, donc exécutez-le à partir de cmd, ou utilisez HeidiSQL.
Avec phpMyAdmin
Sélectionnez la base de données dans la liste de gauche, ouvrez l'onglet Import, choisissez le fichier et exécutez-le.
Attention : sauvegardez la base de données avant d'importer ou de modifier quoi que ce soit. Une sauvegarde prend quelques secondes :
mysqldump -u fivem -p fivem > backup.sql.
Étape 3 : appliquer les mises à jour et les migrations
Quand la table existe mais qu'une colonne manque, une mise à jour l'a ajoutée. Les scripts gèrent cela de deux façons :
- Un fichier de mise à jour tel que
update.sql. Exécutez uniquement les déclarations plus récentes que la version que vous avez installée, car exécuter les anciennes à nouveau échoue avecTable ... already exists. - Une ligne dans le changelog ou la documentation avec le
ALTER TABLEà exécuter.
Un ALTER TABLE qui ajoute une colonne ressemble à ceci :
ALTER TABLE `my_table` ADD COLUMN `plate` VARCHAR(12) NULL;Certains scripts créent ou modifient leurs tables d'eux-mêmes au démarrage. Si le vôtre le fait, redémarrez le script et regardez la console avant de faire quoi que ce soit à la main.
Conseil : si l'erreur n'apparaît que pour certains joueurs, regardez quelle colonne elle nomme. Une colonne ajoutée dans une mise à jour manque souvent seulement sur les serveurs qui ont mis à niveau le script sans exécuter la mise à jour.
Sensibilité à la casse sur Linux
Sur Linux, MariaDB et MySQL traitent les noms de tables comme sensibles à la casse par défaut. Une table créée en tant que Owned_Vehicles n'est pas trouvée par une requête pour owned_vehicles, même si elle fonctionne sur un PC Windows.
La correction est de faire correspondre les noms, pas de changer le paramètre du serveur :
RENAME TABLE `Owned_Vehicles` TO `owned_vehicles`;Gardez les noms de tables en minuscules quand vous les créez, et importez à partir d'un fichier avec les noms que le script utilise.
Les tables du framework manquent aussi
Si la table manquante appartient au framework, comme users, jobs ou owned_vehicles sur ESX, ou players sur QBCore, le SQL de base n'a jamais été importé. Ce fichier est livré avec le framework :
- ESX Legacy : le fichier
.sqlà l'intérieur dees_extended(et ses ressources optionnelles). - QBCore ou QBox : le fichier
.sqldans le téléchargement du framework. Certaines recettes dans txAdmin créent ces tables pour vous.
Un script ne peut pas fonctionner jusqu'à ce que les propres tables du framework existent, alors importez celles-ci en premier.
Nettoyer les restes
Après l'importation, redémarrez le script pour qu'il lise les nouvelles tables :
restart my_scriptSi la même erreur revient, relisez-la. Un nom de table ou de base de données différent dans le message signifie que vous avez corrigé un problème et atteint le suivant. Quand une requête de script est la cause, comment lire une erreur de script FiveM vous aide à trouver le fichier et la ligne.
Liste de contrôle
| Symptôme | Solution |
|---|---|
Table 'db.x' doesn't exist |
Importez le fichier .sql du script dans la base de données de mysql_connection_string |
| Importé, mais toujours manquant | Vous avez sélectionné une autre base de données ; vérifiez le nom dans server.cfg |
Unknown column |
Exécutez la mise à jour ou ALTER TABLE pour la version que vous avez installée |
Table ... already exists à l'importation |
Vous avez exécuté le fichier d'installation deux fois ; exécutez uniquement les déclarations de mise à jour |
| Fonctionne sur Windows, échoue sur Linux | Les noms de tables sont sensibles à la casse ; renommez en minuscules |
| Les tables du framework manquent | Importez d'abord le SQL de base ESX, QBCore ou QBox |
Réponses rapides
Où se trouve le fichier .sql d'un script ?
Généralement dans le dossier du script, à côté de fxmanifest.lua, en tant que install.sql, database.sql ou un nom correspondant au script. Si la page du script ou la documentation mentionne une table, ce fichier est celui à importer.
Dois-je réimporter le fichier SQL quand je mets à jour un script ?
Seulement quand la mise à jour ajoute une table ou une colonne. Recherchez un update.sql ou une note de changelog, et exécutez uniquement les nouvelles déclarations, car les anciennes échoueront sur les tables qui existent déjà.
Pourquoi une table existe-t-elle sur mon PC mais pas sur mon hôte Linux ?
Linux traite les noms de tables comme sensibles à la casse. Players et players sont deux tables différentes là-bas, alors que Windows les traite comme identiques.

