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. Buenas,al intentar generar unas cuantas tablas, este error me aparece Código: Script line: 22 You have an error in your SQL syntax; check the manual ...
  #1 (permalink)  
Antiguo 15/06/2009, 08:08
 
Fecha de Ingreso: junio-2009
Mensajes: 15
Antigüedad: 14 años, 10 meses
Puntos: 0
Error 1064

Buenas,al intentar generar unas cuantas tablas, este error me aparece

Código:
Script line: 22	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 'FOREIGN KEY ( id_cliente ) REFERENCES clientes( id )
FOREIGN KEY ( id_pelicula ' at line 11
Aqui va toda la tabla

Código:
CREATE TABLE actores(
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT ,
nombre VARCHAR( 25 ) ,
fecha_nacimiento DATE ,
biografia LONGTEXT ,
PRIMARY KEY ( id )
)ENGINE=InnoDB;

CREATE TABLE directores(
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT ,
director VARCHAR( 25 ) ,
biografia LONGTEXT ,
PRIMARY KEY ( id )
)ENGINE=InnoDB;

CREATE TABLE generos(
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT ,
genero VARCHAR( 25 ) ,
PRIMARY KEY ( id )
)ENGINE=InnoDB;

CREATE TABLE pedidos(
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT ,
id_pelicula INTEGER ,
titulo VARCHAR( 20 ) ,
editorial VARCHAR( 50 ) ,
id_cliente INTEGER ,
fecha_pedido DATE ,
fecha_devolucion DATE ,
precio SMALLINT ,
PRIMARY KEY ( id )
FOREIGN KEY ( id_cliente ) REFERENCES clientes( id )
FOREIGN KEY ( id_pelicula ) REFERENCES peliculas( id )
FOREIGN KEY ( precio ) REFERENCES peliculas( precio )
)ENGINE=InnoDB;

CREATE TABLE clientes(
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT ,
nombre VARCHAR( 25 ) ,
apellidos VARCHAR( 45 ) ,
direccion VARCHAR( 45 ) ,
dni VARCHAR( 9 ) ,
pedido INTEGER ,
PRIMARY KEY ( id )
FOREIGN KEY (pedido) REFERENCES pedidos(id)
)ENGINE=InnoDB;

CREATE TABLE peliculas(
id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT ,
titulo VARCHAR( 25 ) ,
genero INTEGER ,
precio SMALLINT ,
actor VARCHAR( 25 ) , 
argumento LONGTEXT ,
director INTEGER ,
productora VARCHAR( 25 ),
PRIMARY KEY ( id )
FOREIGN KEY ( genero ) REFERENCES generos( id )
FOREIGN KEY ( actor ) REFERENCES actores( id )
FOREIGN KEY ( director ) REFERENCES directores( id )
ON DELETE CASCADE
ON UPDATE CASCADE
)ENGINE=InnoDB;
  #2 (permalink)  
Antiguo 15/06/2009, 09:00
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, 5 meses
Puntos: 2658
Respuesta: Error 1064

Te faltan comas separando todas las definiciones de FK en todas las tablas.
Ejemplo:
Código sql:
Ver original
  1. CREATE TABLE peliculas(
  2. id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT ,
  3. titulo VARCHAR( 25 ) ,
  4. genero INTEGER ,
  5. precio SMALLINT ,
  6. actor VARCHAR( 25 ) ,
  7. argumento LONGTEXT ,
  8. director INTEGER ,
  9. productora VARCHAR( 25 ),
  10. PRIMARY KEY ( id )
  11. FOREIGN KEY ( genero ) REFERENCES generos( id )
  12. FOREIGN KEY ( actor ) REFERENCES actores( id )
  13. FOREIGN KEY ( director ) REFERENCES directores( id )
  14. ON DELETE CASCADE
  15. ON UPDATE CASCADE
  16. )ENGINE=InnoDB;
Debe ir:
Código sql:
Ver original
  1. CREATE TABLE peliculas(
  2. id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT ,
  3. titulo VARCHAR(25) ,
  4. genero INTEGER ,
  5. precio SMALLINT ,
  6. actor VARCHAR(25) ,
  7. argumento LONGTEXT ,
  8. director INTEGER ,
  9. productora VARCHAR(25),
  10. PRIMARY KEY (id),
  11. FOREIGN KEY (genero) REFERENCES generos(id),
  12. FOREIGN KEY (actor) REFERENCES actores(id),
  13. FOREIGN KEY (director) REFERENCES directores(id)  ON DELETE CASCADE ON UPDATE CASCADE
  14. )ENGINE=InnoDB;

¿Se comprende?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
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 01:46.