Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Error al crear tabla y cargar registros

Estas en el tema de Error al crear tabla y cargar registros en el foro de Mysql en Foros del Web. Buenas, estoy haciendo un script para que cree todas las bases y tablas correspondientes... El primer error me tira cuando quiero crear esta tabla... Código: ...
  #1 (permalink)  
Antiguo 23/02/2008, 06:40
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 5 meses
Puntos: 19
Error al crear tabla y cargar registros

Buenas, estoy haciendo un script para que cree todas las bases y tablas correspondientes...

El primer error me tira cuando quiero crear esta tabla...

Código:
CREATE TABLE Prueba(TIPO VARCHAR(30), TEXTO VARCHAR(100), COLOR INT, LEFT INT, TOP INT, SIZE INT, BOLD BOOL, NAME VARCHAR(50), UNDERLINE BOOL, STRIKETHROUGH BOOL, ITALIC BOOL));
Y el error que me devuelve es el siguiente

Código:
ERROR 1064 (42000): You have an error in yout SQL syntax; check the manual that corresponds to your MySQL server version for the syntax to use near 'LEFT INT, TOP INT, SIZE INT, BOLD BOOL, NAME VARCHAR(50), UNDERLINE BOOL, STRIKE' at line 1
Sera que las palabras LEFT, TOP, SIZE, etc estan reservadas?
  #2 (permalink)  
Antiguo 23/02/2008, 08:15
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Re: Error al crear tabla y cargar registros

LEFT es una función de MySQl y por tanto es palabra reservada (de hecho es palabra reservada en TODOS los lenguajes de computación y lenguajes de consulta que conozco, lo mismo que RIGHT y MID).
Además tienes un doble paréntesis al final (otro error).
  #3 (permalink)  
Antiguo 23/02/2008, 09:18
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 5 meses
Puntos: 19
Re: Error al crear tabla y cargar registros

Cita:
Iniciado por gnzsoloyo Ver Mensaje
LEFT es una función de MySQl y por tanto es palabra reservada (de hecho es palabra reservada en TODOS los lenguajes de computación y lenguajes de consulta que conozco, lo mismo que RIGHT y MID).
Además tienes un doble paréntesis al final (otro error).
Es de suma importancia que mantenga esos nombre, pasa que la base estaba en access y ahi podia utilizarlos, necesito migrar urgentemente a MySQL...

Si pongo entre comillas o algo asi sera que puedo llegar a usar esos nombres, osea hay alguna forma o es imposible.

Desde ya gracias por responderme
  #4 (permalink)  
Antiguo 23/02/2008, 13:49
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Re: Error al crear tabla y cargar registros

Asumo que si necesitas mantener esos nombres es porque ya tienes una aplicación diseñada que los usa. de todos modos, si hubiese alguna posibilidad de reemplazar en el código fuente de la aplicación esas denominaciones de campos, sería muy conveniente. Evitarías problemas de migraciones.

De todos modos, te cuento que sí, MySQL tiene un modo de usar caracteres o palabras reservadas en la denominación de campos y tablas, y es precisamente haciendo que las interprete como tales de forma exclusiva.
Esto lo hace cuando encierras los nombres entre acentos agudos (`). No entre apóstrofes ('), ya que esos se usan para cadenas solamente, como por ejemplo los alias de los campos en un SELECT.
Se supone que los acentos agudos y las comillas (") tienen el mismo uso, pero te recomiendo los acentos agudos, por ser más seguros y así evitarás potenciales problemas con el intérprete del parser.

Prueba entonces:
Código:
CREATE TABLE `Prueba`(
  `TIPO` VARCHAR(30), 
  `TEXTO` VARCHAR(100), 
  `COLOR` INT, 
  `LEFT` INT, 
  `TOP` INT, 
  `SIZE` INT, 
  `BOLD` BOOL, 
  `NAME` VARCHAR(50), 
  `UNDERLINE` BOOL, 
  `STRIKETHROUGH` BOOL, 
  `ITALIC` BOOL);
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:41.