La tabla 'db.x' no existe e Columna desconocida: importa el archivo SQL

¿Un script de FiveM falla con 'La tabla no existe' o 'Columna desconocida'? Importa su archivo .sql con HeidiSQL o el CLI de mysql, elige la base de datos correcta, y ejecuta las actualizaciones.

Tu consola muestra un error de base de datos, y el script que lo causó deja de funcionar:

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

oxmysql muestra los mismos errores como ER_NO_SUCH_TABLE y ER_BAD_FIELD_ERROR. Este artículo cubre qué significan y cómo arreglar ambos: importa el archivo SQL del script en la base de datos correcta, y ejecuta sus actualizaciones.

Qué significan los dos errores

  • La tabla no existe. El script pide una tabla que nunca fue creada en la base de datos a la que se conecta tu servidor.
  • Columna desconocida. La tabla existe, pero no tiene una columna con ese nombre. La tabla proviene de una versión anterior, o un archivo SQL más antiguo.

En ambos casos el script está bien. La base de datos no coincide con lo que el script espera.

Paso 1: encuentra la base de datos correcta

Antes de importar cualquier cosa, comprueba qué base de datos usa el servidor. Es la última parte de la cadena de conexión en server.cfg:

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

Aquí la base de datos es fivem. Si importas en otra, por ejemplo test o mysql, el script no verá las tablas. Si la conexión misma falla, comienza con oxmysql no puede conectar.

Paso 2: importa el archivo .sql

Encuentra el archivo en la carpeta del script. Se llama install.sql, database.sql, o después del script. Ábrelo en un editor de texto primero: si tiene una línea USE some_database;, asegúrate de que coincida con tu base de datos o elimínala.

Con HeidiSQL

  1. Abre tu sesión y conéctate.
  2. En el árbol de la izquierda, haz clic en tu base de datos (por ejemplo fivem), para que sea la seleccionada.
  3. Abre el menú File y elige Run SQL file, luego elige el archivo .sql.
  4. Actualiza el árbol con F5, y las nuevas tablas aparecen bajo la base de datos.

Con la línea de comandos de mysql

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

El segundo fivem es el nombre de la base de datos. En Windows PowerShell, < no funciona de la misma manera, así que ejecútalo desde cmd, o usa HeidiSQL.

Con phpMyAdmin

Selecciona la base de datos en la lista de la izquierda, abre la pestaña Import, elige el archivo y ejecútalo.

Cuidado: haz una copia de seguridad de la base de datos antes de importar o alterar cualquier cosa. Un dump toma segundos: mysqldump -u fivem -p fivem > backup.sql.

Paso 3: aplica actualizaciones y migraciones

Cuando la tabla existe pero falta una columna, una actualización la añadió. Los scripts lo manejan de dos formas:

  • Un archivo de actualización como update.sql. Ejecuta solo las declaraciones más nuevas que la versión que instalaste, ya que ejecutar las antiguas de nuevo falla con Table ... already exists.
  • Una línea en el changelog o los documentos con el ALTER TABLE a ejecutar.

Un ALTER TABLE que añade una columna se ve así:

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

Algunos scripts crean o alteran sus propias tablas cuando inician. Si el tuyo lo hace, reinicia el script y mira la consola antes de hacer cualquier cosa a mano.

Consejo: si el error solo aparece para algunos jugadores, mira qué columna nombra. Una columna añadida en una actualización a menudo falta solo en servidores que actualizaron el script sin ejecutar la actualización.

Sensibilidad a mayúsculas en Linux

En Linux, MariaDB y MySQL tratan los nombres de tablas como sensibles a mayúsculas por defecto. Una tabla creada como Owned_Vehicles no se encuentra por una consulta de owned_vehicles, aunque funciona en un PC con Windows.

La solución es hacer que los nombres coincidan, no cambiar la configuración del servidor:

sql
RENAME TABLE `Owned_Vehicles` TO `owned_vehicles`;

Mantén los nombres de tabla en minúsculas cuando los crees, e importa desde un archivo con los nombres que usa el script.

Las tablas del framework también faltan

Si la tabla faltante pertenece al framework, como users, jobs u owned_vehicles en ESX, o players en QBCore, el SQL base nunca fue importado. Ese archivo se envía con el framework:

  • ESX Legacy: el archivo .sql dentro de es_extended (y sus recursos opcionales).
  • QBCore o QBox: el archivo .sql en la descarga del framework. Algunas recetas en txAdmin crean estas tablas para ti.

Un script no puede funcionar hasta que existan las propias tablas del framework, así que importa esas primero.

Limpia los restos

Después de importar, reinicia el script para que lea las nuevas tablas:

text
restart my_script

Si el mismo error vuelve, léelo de nuevo. Un nombre de tabla o base de datos diferente en el mensaje significa que arreglaste un problema y alcanzaste el siguiente. Cuando una consulta de script es la causa, cómo leer un error de script de FiveM te ayuda a encontrar el archivo y la línea.

Lista de comprobación

Síntoma Solución
Table 'db.x' doesn't exist Importa el archivo .sql del script en la base de datos de mysql_connection_string
Importado, pero aún faltante Seleccionaste otra base de datos; comprueba el nombre en server.cfg
Unknown column Ejecuta la actualización o ALTER TABLE para la versión que instalaste
Table ... already exists al importar Ejecutaste el archivo de instalación dos veces; ejecuta solo las declaraciones de actualización
Funciona en Windows, falla en Linux Los nombres de tabla son sensibles a mayúsculas; renombra a minúsculas
Tablas del framework faltantes Importa el SQL base de ESX, QBCore o QBox primero

Respuestas rápidas

¿Dónde está el archivo .sql de un script?

Generalmente en la carpeta del script, al lado de fxmanifest.lua, como install.sql, database.sql o un nombre que coincida con el script. Si la página del script o los documentos mencionan una tabla, ese archivo es el que importar.

¿Necesito importar el archivo SQL de nuevo cuando actualizo un script?

Solo cuando la actualización añade una tabla o una columna. Busca un update.sql o una nota de changelog, y ejecuta solo las nuevas declaraciones, ya que las antiguas fallarán en tablas que ya existen.

¿Por qué existe una tabla en mi PC pero no en mi host Linux?

Linux trata los nombres de tablas como sensibles a mayúsculas. Players y players son dos tablas diferentes allí, mientras que Windows las trata como iguales.

Scripts que evitan este problema

Item Creator V2Crea items usables con animaciones, props, efectos y más — sin escribir código.Ver script →Shop CreatorCrea una tienda en menos de un minuto — dueños, empleados, caja fuerte y atracos.Ver script →

Sigue leyendo