La tabella 'db.x' non esiste e Colonna sconosciuta: importa il file SQL
Uno script FiveM fallisce con 'Table doesn''t exist' o 'Unknown column'? Importa il suo file .sql con HeidiSQL o l'interfaccia CLI di mysql, scegli il database giusto ed esegui gli aggiornamenti.
La tua console mostra un errore di database, e lo script che l'ha causato smette di funzionare:
Table 'fivem.my_table' doesn't exist
Unknown column 'plate' in 'field list'oxmysql mostra gli stessi errori come ER_NO_SUCH_TABLE e ER_BAD_FIELD_ERROR. Questo articolo copre cosa significano e come risolvere entrambi: importa il file SQL dello script nel database giusto ed esegui i suoi aggiornamenti.
Cosa significano i due errori
- Table doesn't exist. Lo script chiede una tabella che non è mai stata creata nel database a cui il tuo server è connesso.
- Unknown column. La tabella esiste, ma non ha una colonna con quel nome. La tabella viene da una versione precedente, o da un file SQL più vecchio.
In entrambi i casi lo script va bene. Il database non corrisponde a quello che lo script si aspetta.
Passo 1: trova il database giusto
Prima di importare qualcosa, controlla quale database usa il server. È l'ultima parte della stringa di connessione in server.cfg:
set mysql_connection_string "mysql://fivem:yourpassword@localhost/fivem?charset=utf8mb4"Qui il database è fivem. Se importi in un altro, ad esempio test o mysql, lo script non vedrà le tabelle. Se la connessione stessa fallisce, inizia con oxmysql can't connect.
Passo 2: importa il file .sql
Trova il file nella cartella dello script. È denominato install.sql, database.sql, o dopo lo script. Aprilo prima in un editor di testo: se ha una riga USE some_database;, assicurati che corrisponda al tuo database o rimuovila.
Con HeidiSQL
- Apri la tua sessione e connetti.
- Nel riquadro sinistro, fai clic sul tuo database (ad esempio
fivem), in modo che sia quello selezionato. - Apri il menu File e scegli Run SQL file, quindi seleziona il file
.sql. - Aggiorna l'albero con F5, e le nuove tabelle appaiono sotto il database.
Con la riga di comando mysql
mysql -u fivem -p fivem < /path/to/install.sqlIl secondo fivem è il nome del database. Su PowerShell di Windows, < non funziona nello stesso modo, quindi eseguilo da cmd, o usa HeidiSQL.
Con phpMyAdmin
Seleziona il database nell'elenco sinistro, apri la scheda Import, scegli il file ed eseguilo.
Attenzione: fai un backup del database prima di importare o alterare qualcosa. Un dump richiede secondi:
mysqldump -u fivem -p fivem > backup.sql.
Passo 3: applica gli aggiornamenti e le migrazioni
Quando la tabella esiste ma una colonna manca, un aggiornamento l'ha aggiunta. Gli script lo gestiscono in due modi:
- Un file di aggiornamento come
update.sql. Esegui solo le istruzioni più recenti della versione che hai installato, poiché eseguire di nuovo quelle vecchie fallisce conTable ... already exists. - Una riga nella changelog o nella documentazione con l'
ALTER TABLEda eseguire.
Un ALTER TABLE che aggiunge una colonna assomiglia a questo:
ALTER TABLE `my_table` ADD COLUMN `plate` VARCHAR(12) NULL;Alcuni script creano o alterano le loro tabelle di propria iniziativa quando si avviano. Se il tuo lo fa, riavvia lo script e osserva la console prima di fare qualcosa a mano.
Suggerimento: se l'errore appare solo per alcuni giocatori, guarda quale colonna nomina. Una colonna aggiunta in un aggiornamento spesso manca solo sui server che hanno aggiornato lo script senza eseguire l'aggiornamento.
Sensibilità maiuscole/minuscole su Linux
Su Linux, MariaDB e MySQL trattano i nomi delle tabelle come sensibili a maiuscole/minuscole per impostazione predefinita. Una tabella creata come Owned_Vehicles non viene trovata da una query per owned_vehicles, anche se funziona su un PC Windows.
La correzione è fare in modo che i nomi corrispondano, non cambiare l'impostazione del server:
RENAME TABLE `Owned_Vehicles` TO `owned_vehicles`;Mantieni i nomi delle tabelle in minuscolo quando le crei, e importa da un file con i nomi che lo script usa.
Anche le tabelle del framework mancano
Se la tabella mancante appartiene al framework, come users, jobs o owned_vehicles su ESX, o players su QBCore, il SQL base non è mai stato importato. Quel file viene fornito con il framework:
- ESX Legacy: il file
.sqldentroes_extended(e le sue risorse opzionali). - QBCore o QBox: il file
.sqlnel download del framework. Alcuni ricettari in txAdmin creano queste tabelle per te.
Uno script non può funzionare fino a quando le tabelle del framework stesso non esistono, quindi importale prima.
Pulisci gli avanzi
Dopo l'importazione, riavvia lo script in modo che legga le nuove tabelle:
restart my_scriptSe lo stesso errore torna, leggilo di nuovo. Un nome di tabella o database diverso nel messaggio significa che hai risolto un problema e raggiunto il successivo. Quando una query di script è la causa, come leggere un errore di script FiveM ti aiuta a trovare il file e la riga.
Checklist
| Sintomo | Soluzione |
|---|---|
Table 'db.x' doesn't exist |
Importa il file .sql dello script nel database da mysql_connection_string |
| Importato, ma ancora mancante | Hai selezionato un altro database; controlla il nome in server.cfg |
Unknown column |
Esegui l'aggiornamento o ALTER TABLE per la versione che hai installato |
Table ... already exists all'importazione |
Hai eseguito il file di installazione due volte; esegui solo le istruzioni di aggiornamento |
| Funziona su Windows, fallisce su Linux | I nomi delle tabelle sono sensibili a maiuscole/minuscole; rinomina in minuscolo |
| Tabelle del framework mancanti | Importa il SQL base di ESX, QBCore o QBox per primo |
Risposte rapide
Dov'è il file .sql di uno script?
Di solito nella cartella dello script, accanto a fxmanifest.lua, come install.sql, database.sql o un nome che corrisponde allo script. Se la pagina o la documentazione dello script menzionano una tabella, quel file è quello da importare.
Ho bisogno di importare di nuovo il file SQL quando aggiorno uno script?
Solo quando l'aggiornamento aggiunge una tabella o una colonna. Cerca un update.sql o una nota changelog, ed esegui solo le nuove istruzioni, poiché quelle vecchie falliranno su tabelle che già esistono.
Perché una tabella esiste sul mio PC ma non sul mio host Linux?
Linux tratta i nomi delle tabelle come sensibili a maiuscole/minuscole. Players e players sono due tabelle diverse lì, mentre Windows le tratta come la stessa.

