2012-04-09 12 views
5

Parece que nunca puedo crear tablas MySQL con columnas del tipo TEXTO. Aquí está mi MySQL:Error de sintaxis Crear una tabla con una columna llamada 'desc'

CREATE TABLE factions(id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id), name VARCHAR(16) NOT NULL, desc TEXT NOT NULL, admins TEXT NOT NULL, mods TEXT, members TEXT, land TEXT, enemies TEXT, allies TEXT) 

cuando se ejecuta, me sale esto:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc text NOT NULL, admins text NOT NULL, mods text, members text, land text, en' at line 1 

no puedo averiguar lo que está mal! Estoy usando Java si hace alguna diferencia.

+1

En otra nota, estoy bastante seguro de que su uso de texto para la mayoría de estas columnas es incorrecta – IcedDante

+1

Sí, la mayoría de esos usos de TEXT fueron bastante malos. Afortunadamente, he mejorado mucho desde que originalmente hice esta pregunta. – Greg

+1

Pensé que probablemente lo había hecho;) – IcedDante

Respuesta

14

desc es una palabra reservada y no debe usarse como nombre de una columna. Usted puede use desc como nombre de una columna, pero si lo hace, siempre debe envolverlo en "back-ticks".

CREATE TABLE factions(
    id INT NOT NULL AUTO_INCREMENT, 
    PRIMARY KEY(id), 
    name VARCHAR(16) NOT NULL, 
    `desc` TEXT NOT NULL, 
    admins TEXT NOT NULL, 
    mods TEXT, 
    members TEXT, 
    land TEXT, 
    enemies TEXT, 
    allies TEXT 
); 

Lo anterior se ha probado y funciona, pero ya que siempre tendrá que envolver en las copias de las garrapatas (en todos los INSERT, UPDATE y DELETE) es posible que desee cambiar el nombre, o simplemente entrar en el hábito de envolver todos los campos en back-ticks, lo que tiene otras ventajas.

0

desc es una palabra reservada y no puede se no darse como un nombre de una tabla o columna. Puede usar description como el nombre de la columna. Con el cambio de nombre, su declaración debería funcionar.

+0

Esto no es del todo correcto. – Umbrella

1

el cambio del nombre de la columna desc a cualquier otra cosa, ya que es una palabra reservados para descend o describe

Cuestiones relacionadas