Cómo solucionar este error de sintaxis de creación de tabla de MySQL

CorePress2024-01-24  8

Esta pregunta ya tiene respuesta aquí: Error de sintaxis debido al uso de una palabra reservada como nombre de tabla o columna en MySQL

(1 respuesta)

Cerrado

hace 2 años

.

Recibo un error de sintaxis de creación de tabla en MySQL y espero que alguien pueda detectarlo antes de que pierda la cordura.

create table buyer_representations (
Key int not null auto_increment,
Client_ID int not null,
Start_Time varchar(5),
Start_Date date,
End_Date date,
Property_Type varchar(255),
Geographic_Location varchar(255),
Commission varchar(255),
Alternate_Commission varchar(255),
Lease_Commission varchar(255),
Holdover varchar(255),
Clauses varchar(2000),
primary key (Key)
);

ERROR 1064 (42000): Tiene un error en su sintaxis SQL;consulte el manual que corresponde a la versión de su servidor MySQL para conocer la sintaxis correcta a utilizar cerca de 'int not null auto_increment, client_ID int no nulo, Hora_inicio varchar(5), Estrella' en la línea 2

mysql Ver 14.14 Distrib 5.7.29, para Linux (x86_64) usando el contenedor EditLine

Intenté agregar 'clave principal' al final de la línea 2, así como un valor predeterminado, y cambiar 'no nulo' por 'auto_increment'... pero nada funciona.

Editar: También intenté cambiar Key a KeyId y poner Key entre comillas... pero el error sigue siendo el mismo.

Edición final: poner la clave entre comillas finalmente funcionó

create table buyer_representations (
`Key` int not null auto_increment,
Client_ID int not null,
Start_Time varchar(5),
Start_Date date,
End_Date date,
Property_Type varchar(255),
Geographic_Location varchar(255),
Commission varchar(255),
Alternate_Commission varchar(255),
Lease_Commission varchar(255),
Holdover varchar(255),
Clauses varchar(2000),
primary key (`Key`)
);

1

La clave es una palabra clave de MySQL y no puede (o no debe) usarse para nombres de tablas/columnas. Utilice un nombre diferente.

-Progman

27/03/2021 a las 14:35

Edite su pregunta para incluir la nueva consulta que está ejecutando y el mensaje de error completo que recibe ahora con la consulta modificada.

-Progman

27/03/2021 a las 14:55

Ambas consultas agregadas con Key entre comillas y la que usa el nombre KeyId funcionan perfectamente. Parece que todavía estás ejecutando la consulta anterior cuando sigues apareciendo el mismo mensaje de error.

-Progman

27/03/2021 a las 15:14



------------------------------------

La clave es una palabra clave de reserva, cámbiele el nombre y debería estar dorado.

Puede encontrar una lista completa de palabras clave y palabras reservadas en la sección 10.3 Palabras clave y palabras reservadas. Abajo

https://dev.mysql.com/doc/refman/8.0/en/keywords.html

en su caso, esto debería funcionar (lo llamo prueba, pero le cambio el nombre a cualquierse adapta a su situación)

create table buyer_representations (
test int not null auto_increment,
Client_ID int not null,
Start_Time varchar(5),
Start_Date date,
End_Date date,
Property_Type varchar(255),
Geographic_Location varchar(255),
Commission varchar(255),
Alternate_Commission varchar(255),
Lease_Commission varchar(255),
Holdover varchar(255),
Clauses varchar(2000),
primary key (test)
);

4

Intenté cambiar el nombre de Key a KeyId, pero sigo apareciendo el mismo error. ¿Mysql no incluiría la clave como parte del mensaje de error si ese fuera el problema?

-ak1por ciento

27/03/2021 a las 14:53

jajaja, si tan solo Mysql fuera tan genial, ¿eh? ¿También cambiaste el nombre de tu principal?clave?

- masticable

27/03/2021 a las 14:55

Utilice lo que acabo de actualizar como ejemplo. Eso debería funcionar.

- masticable

27/03/2021 a las 15:00

Eso funcionó. Gracias. Muy apreciado.

-ak1por ciento

27/03/2021 a las 15:13



------------------------------------

El problema es el nombre de la columna que ha utilizado en su tabla. El nombre de la primera columna es Clave. La clave se considera una palabra reservada en Mysql y tiene un significado especial. Por eso hay un error.

Si desea utilizar el mismo nombre de columna, puede hacerlo escribiendo el nombre de la columna dentro de ``.

Por ej. crear tabla representaciones_comprador ( `Key` int no nulo auto_increment,

Esto funcionará bien.

3

Gracias por el consejo. Intenté agregar las comillas, pero aún asíRecibirás el mismo error.

-ak1por ciento

27/03/2021 a las 14:54

Es posible que esté utilizando ' ' estos como las comillas. Más bien tienes que usar ` ` entre comillas. Este símbolo ` está presente en el lado izquierdo del número 1 en el teclado qwerty.

- IMPERIO

27/03/2021 a las 15:04

Aplique esto también en la sección de clave principal, ya que tiene Clave como clave principal para su tabla. Debería funcionar

- IMPERIO

27/03/2021 a las 15:07

Su guía para un futuro mejor - libreflare
Su guía para un futuro mejor - libreflare