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

Error 1064

Estas en el tema de Error 1064 en el foro de Mysql en Foros del Web. Hola. Hace un rato que no ocupaba MySql y bajé WAMP en su versión 2.1 con la versión de MySql 5.5.8... y una sentencia me ...
  #1 (permalink)  
Antiguo 10/02/2012, 17:20
 
Fecha de Ingreso: agosto-2011
Mensajes: 100
Antigüedad: 12 años, 8 meses
Puntos: 1
Error 1064

Hola.

Hace un rato que no ocupaba MySql y bajé WAMP en su versión 2.1 con la versión de MySql 5.5.8... y una sentencia me tira el error 1064 de problemas de "escritura" debido a que la versión no lo soporta:

Código MySQL:
Ver original
  1. create table id_plan_entreno(
  2. fecha date not null,
  3. vigente boolean not null,
  4. id_cliente int not null references usuario (id_usuario)
  5. )
El error me lo tira en la línea 5, cuando hago la relación a una tabla ya creada... aquí me pilló, revisé bien y hasta donde sé la relación está bien hecha, los campos tienen el mismo formato y están en minúsculas en los 2 casos... alguna ayuda?
  #2 (permalink)  
Antiguo 10/02/2012, 17:31
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
Respuesta: Error 1064

En principio, no estás poniendo el tipo de CONTRAINT que corresponde a id_cliente.
Código MySQL:
Ver original
  1. CREATE TABLE id_plan_entreno(
  2. fecha DATE NOT NULL,
  3. vigente boolean NOT NULL,
  4. id_cliente INT NOT NULL,
  5. FOREIGN KEY id_cliente REFERENCES usuario (id_usuario)
  6. )
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 10/02/2012 a las 17:39
  #3 (permalink)  
Antiguo 10/02/2012, 17:52
 
Fecha de Ingreso: agosto-2011
Mensajes: 100
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Error 1064

Cita:
Iniciado por gnzsoloyo Ver Mensaje
En principio, no estás poniendo el tipo de CONTRAINT que corresponde a id_cliente.
Código MySQL:
Ver original
  1. CREATE TABLE id_plan_entreno(
  2. fecha DATE NOT NULL,
  3. vigente boolean NOT NULL,
  4. id_cliente INT NOT NULL,
  5. FOREIGN KEY id_cliente REFERENCES usuario (id_usuario)
  6. )
No quiero trabajar con constraint, lo que pasa es que estoy trabajando para editar la BD desde PHP... y con constraint se me complica un mundo... voy a dar un ojo a la documentación de mi versión, pero dudo que sea algo relacionado a la "escritura".

Gracias igual.
  #4 (permalink)  
Antiguo 10/02/2012, 19:27
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
Respuesta: Error 1064

Perdón, pero ¿al menos tienes idea de qué es una CONSTRAINT?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 10/02/2012, 19:29
 
Fecha de Ingreso: agosto-2011
Mensajes: 100
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Error 1064

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Perdón, pero ¿al menos tienes idea de qué es una CONSTRAINT?
Es como una restricción que no te permite eliminar tablas relacionadas si no es por orden... eso entiendo yo.
  #6 (permalink)  
Antiguo 10/02/2012, 19:42
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
Respuesta: Error 1064

Mas o menos: Es toda restricción definida con un nombre, y cuando le pones el REFERENCES estás intentando crear una FOREIGN KEY, que por definición es una CONSTRAINT. Pero como la estás poniendo incompleta, te da error.
Si le pones el FOREIGN KEY como te lo indico, la CONSTRAINT se creará y MySQL le pondrá un nombre por si mismo.
Quedará algo así como
Código MySQL:
Ver original
  1. CREATE TABLE `id_plan_entreno` (
  2.   `id_plan` int(11) NOT NULL auto_increment,
  3.   `fecha` date NOT NULL,
  4.   `vigente` tinyint(1) NOT NULL,
  5.   `id_cliente` int(10) NOT NULL,
  6.   PRIMARY KEY  (`id_plan`),
  7.   KEY `id_cliente` (`id_cliente`),
  8.   CONSTRAINT `id_plan_entreno_ibfk_1` FOREIGN KEY (`id_cliente`) REFERENCES `usuario` (`id_cliente`)

MySQL completa partes de la sentencia cuando el resto está sintácticamente bien. Pero lo que estás poniendo está mal redactado desde inicio.
La cláusula CONSTRAINT se usa para definir el nombre con el que el objeto FK se creará y no pueden repetirse dentro de la misma base de datos.
Lee el manual de referencia de MySQL antes de seguir (MySQL AB MySQL 5.0 Reference Manual).
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 11/02/2012, 07:27
 
Fecha de Ingreso: agosto-2011
Mensajes: 100
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Error 1064

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Mas o menos: Es toda restricción definida con un nombre, y cuando le pones el REFERENCES estás intentando crear una FOREIGN KEY, que por definición es una CONSTRAINT. Pero como la estás poniendo incompleta, te da error.
Si le pones el FOREIGN KEY como te lo indico, la CONSTRAINT se creará y MySQL le pondrá un nombre por si mismo.
Quedará algo así como
Código MySQL:
Ver original
  1. CREATE TABLE `id_plan_entreno` (
  2.   `id_plan` int(11) NOT NULL auto_increment,
  3.   `fecha` date NOT NULL,
  4.   `vigente` tinyint(1) NOT NULL,
  5.   `id_cliente` int(10) NOT NULL,
  6.   PRIMARY KEY  (`id_plan`),
  7.   KEY `id_cliente` (`id_cliente`),
  8.   CONSTRAINT `id_plan_entreno_ibfk_1` FOREIGN KEY (`id_cliente`) REFERENCES `usuario` (`id_cliente`)

MySQL completa partes de la sentencia cuando el resto está sintácticamente bien. Pero lo que estás poniendo está mal redactado desde inicio.
La cláusula CONSTRAINT se usa para definir el nombre con el que el objeto FK se creará y no pueden repetirse dentro de la misma base de datos.
Lee el manual de referencia de MySQL antes de seguir (MySQL AB MySQL 5.0 Reference Manual).
Muchas gracias, ahora me corre sin mayores problemas... le daré una mirada a lo que me dices, saludos.

Etiquetas: 1064, sql, tabla, campos
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 15:01.