Tabela 'db.x' não existe e coluna desconhecida: importe o arquivo SQL
Um script FiveM falha com Tabela não existe ou Coluna desconhecida? Importe seu arquivo .sql com HeidiSQL ou a CLI mysql, escolha o banco de dados certo e execute as atualizações.
Seu console mostra um erro de banco de dados, e o script que o causou para de funcionar:
Table 'fivem.my_table' doesn't exist
Unknown column 'plate' in 'field list'oxmysql mostra os mesmos erros como ER_NO_SUCH_TABLE e ER_BAD_FIELD_ERROR. Este artigo cobre o que eles significam e como corrigir ambos: importe o arquivo SQL do script no banco de dados certo e execute suas atualizações.
O que os dois erros significam
- Tabela não existe. O script pede uma tabela que nunca foi criada no banco de dados a que seu servidor está conectado.
- Coluna desconhecida. A tabela existe, mas não tem uma coluna com aquele nome. A tabela veio de uma versão mais antiga, ou um arquivo SQL mais antigo.
Em ambos os casos o script está bem. O banco de dados não corresponde ao que o script espera.
Passo 1: encontre o banco de dados certo
Antes de importar qualquer coisa, verifique qual banco de dados o servidor usa. É a última parte da string de conexão em server.cfg:
set mysql_connection_string "mysql://fivem:yourpassword@localhost/fivem?charset=utf8mb4"Aqui o banco de dados é fivem. Se você importar em outro, por exemplo test ou mysql, o script não verá as tabelas. Se a própria conexão falhar, comece com oxmysql não consegue conectar.
Passo 2: importe o arquivo .sql
Encontre o arquivo na pasta do script. Ele se chama install.sql, database.sql, ou após o script. Abra-o em um editor de texto primeiro: se tiver uma linha USE some_database;, certifique-se de que corresponda ao seu banco de dados ou remova-a.
Com HeidiSQL
- Abra sua sessão e conecte.
- Na árvore esquerda, clique no seu banco de dados (por exemplo
fivem), para que seja o selecionado. - Abra o menu Arquivo e escolha Executar arquivo SQL, depois escolha o arquivo
.sql. - Atualize a árvore com F5, e as novas tabelas aparecem sob o banco de dados.
Com a linha de comando mysql
mysql -u fivem -p fivem < /path/to/install.sqlO segundo fivem é o nome do banco de dados. No Windows PowerShell, < não funciona da mesma forma, então execute-o de cmd, ou use HeidiSQL.
Com phpMyAdmin
Selecione o banco de dados na lista esquerda, abra a aba Importar, escolha o arquivo e execute-o.
Atenção: faça backup do banco de dados antes de importar ou alterar qualquer coisa. Um dump leva segundos:
mysqldump -u fivem -p fivem > backup.sql.
Passo 3: aplique atualizações e migrações
Quando a tabela existe, mas uma coluna está faltando, uma atualização a adicionou. Os scripts lidam com isso de duas formas:
- Um arquivo de atualização como
update.sql. Execute apenas as instruções mais novas do que a versão que você instalou, já que executar as antigas novamente falha comTable ... already exists. - Uma linha no changelog ou nos documentos com o
ALTER TABLEa executar.
Um ALTER TABLE que adiciona uma coluna fica assim:
ALTER TABLE `my_table` ADD COLUMN `plate` VARCHAR(12) NULL;Alguns scripts criam ou alteram suas tabelas por conta própria quando iniciam. Se o seu faz, reinicie o script e observe o console antes de fazer qualquer coisa à mão.
Dica: se o erro aparecer apenas para alguns jogadores, veja qual coluna ele nomeia. Uma coluna adicionada em uma atualização geralmente está faltando apenas em servidores que atualizaram o script sem executar a atualização.
Sensibilidade a maiúsculas e minúsculas no Linux
No Linux, MariaDB e MySQL tratam nomes de tabelas como sensíveis a maiúsculas por padrão. Uma tabela criada como Owned_Vehicles não é encontrada por uma query para owned_vehicles, mesmo que funcione em um PC Windows.
A correção é fazer os nomes corresponderem, não alterar a configuração do servidor:
RENAME TABLE `Owned_Vehicles` TO `owned_vehicles`;Mantenha nomes de tabelas em minúsculas quando criar, e importe de um arquivo com os nomes que o script usa.
As tabelas do framework também estão faltando
Se a tabela faltante pertencer ao framework, como users, jobs ou owned_vehicles no ESX, ou players no QBCore, o SQL base nunca foi importado. Esse arquivo vem com o framework:
- ESX Legacy: o arquivo
.sqldentro dees_extended(e seus recursos opcionais). - QBCore ou QBox: o arquivo
.sqlno download do framework. Algumas receitas no txAdmin criam essas tabelas para você.
Um script não pode funcionar até que as próprias tabelas do framework existam, então importe aquelas primeiro.
Limpe os restos
Depois de importar, reinicie o script para que leia as novas tabelas:
restart my_scriptSe o mesmo erro voltar, leia-o novamente. Um nome de tabela ou banco de dados diferente na mensagem significa que você corrigiu um problema e chegou ao próximo. Quando uma query de script é a causa, como ler um erro de script FiveM ajuda você a encontrar o arquivo e a linha.
Lista de verificação
| Sintoma | Solução |
|---|---|
Table 'db.x' doesn't exist |
Importe o arquivo .sql do script no banco de dados de mysql_connection_string |
| Importado, mas ainda falta | Você selecionou outro banco de dados; verifique o nome em server.cfg |
Unknown column |
Execute a atualização ou ALTER TABLE para a versão que instalou |
Table ... already exists ao importar |
Você executou o arquivo de instalação duas vezes; execute apenas as instruções de atualização |
| Funciona no Windows, falha no Linux | Nomes de tabelas são sensíveis a maiúsculas; renomeie para minúsculas |
| Tabelas do framework faltando | Importe o SQL base de ESX, QBCore ou QBox primeiro |
Respostas rápidas
Onde fica o arquivo .sql de um script?
Geralmente na pasta do script, ao lado de fxmanifest.lua, como install.sql, database.sql ou um nome que corresponda ao script. Se a página ou documentação do script mencionar uma tabela, esse arquivo é o a importar.
Preciso importar o arquivo SQL novamente quando atualizo um script?
Apenas quando a atualização adiciona uma tabela ou uma coluna. Procure por update.sql ou uma nota de changelog, e execute apenas as novas instruções, já que as antigas falharão em tabelas que já existem.
Por que uma tabela existe no meu PC, mas não no meu host Linux?
O Linux trata nomes de tabelas como sensíveis a maiúsculas. Players e players são duas tabelas diferentes lá, enquanto o Windows as trata como iguais.

