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

erro en creacion de tabla

Estas en el tema de erro en creacion de tabla en el foro de Bases de Datos General en Foros del Web. Alguien sabe que puede fallar? Utizo mysql 4.0.18 y la tabla asignatura esta creada. CREATE TABLE alumno ( nombre varchar(20) not null, apellido1 varchar(20) not ...
  #1 (permalink)  
Antiguo 16/08/2005, 04:18
 
Fecha de Ingreso: octubre-2003
Mensajes: 184
Antigüedad: 20 años, 6 meses
Puntos: 0
erro en creacion de tabla

Alguien sabe que puede fallar? Utizo mysql 4.0.18 y la tabla asignatura esta creada.

CREATE TABLE alumno (

nombre varchar(20) not null,
apellido1 varchar(20) not null,
apellido2 varchar(20) not null,
curso int not null,
tipoCurso varchar(20) not null,
correoElec varchar(20) not null,
dni varchar(9) not null,
index (curso),
primary key (dni),
foreign key (curso) references asignatura(curso) on delete cascade) type=InnoDB;

Me da el siguiente error
Can't create table '.\colegio\alumno.frm' (errno: 150) Error number:1005
  #2 (permalink)  
Antiguo 16/08/2005, 04:35
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 6 meses
Puntos: 5
Creo que tienes mal cerrado el paréntesis del CREATE TABLE. Lo cierras despues del delete cascade cuando debes hacerlo después de type=InnoDB:

CREATE TABLE alumno (

nombre varchar(20) not null,
apellido1 varchar(20) not null,
apellido2 varchar(20) not null,
curso int not null,
tipoCurso varchar(20) not null,
correoElec varchar(20) not null,
dni varchar(9) not null,
index (curso),
primary key (dni),
foreign key (curso) references asignatura(curso) on delete cascade type=InnoDB);
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
  #3 (permalink)  
Antiguo 16/08/2005, 04:48
 
Fecha de Ingreso: octubre-2003
Mensajes: 184
Antigüedad: 20 años, 6 meses
Puntos: 0
Lo he modificado y me da error de sintaxis, asi que no creo que sea eso.
Gracias de todas formas
  #4 (permalink)  
Antiguo 16/08/2005, 04:56
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 6 meses
Puntos: 5
Comprueba que realemnte en la tabla asignatura tienes un campo que se llama exactamente curso y que es del mismo tipo que el campo curso de tu tabla alumno.
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
  #5 (permalink)  
Antiguo 16/08/2005, 05:00
Avatar de Helbira  
Fecha de Ingreso: octubre-2001
Ubicación: Sevilla, España
Mensajes: 1.228
Antigüedad: 22 años, 6 meses
Puntos: 5
Buscando por internet he encontrado que ese error aparece por alguna de las siguientes causas:

* No has definido un índice para la columna curso de la tabla alumno
* La tabla a la que haces referencia, asignatura, no es una tabla InnoDB
* La columna curso de la tabla asignatura no es del tipo UNIQUE.
__________________
BUSCO TELETRABAJO
Experiencia de mas de 4 años como desarrolladora web en PHP, ASP, XML, XSL, JavaScript, MySQL, PostGres, SQLServer, ...
  #6 (permalink)  
Antiguo 16/08/2005, 05:02
 
Fecha de Ingreso: octubre-2003
Mensajes: 184
Antigüedad: 20 años, 6 meses
Puntos: 0
Si lo tengo mas que comprobado, mira te pongo el codigo de la tabla asignatura, haber si cuatro ojos ven mas que dos:

CREATE TABLE asignatura (

nomAsig varchar(20) not null,
curso int not null,
tipoCurso varchar(20) not null,
dniPro varchar(9) not null,
codAsig varchar(20) not null,
nomPro varchar(20) not null,
apePro varchar(20) not null,
primary key (nomAsig, curso, tipoCurso, dniPro, codAsig))
type=InnoDB;
  #7 (permalink)  
Antiguo 16/08/2005, 05:22
 
Fecha de Ingreso: octubre-2003
Mensajes: 184
Antigüedad: 20 años, 6 meses
Puntos: 0
Las dos primeras condiciones las cumple, tanto alumno como asignatura son de tipo InnoDB y creo que en la tabla alumno tengo definido un index de tipo alumno, lo unico que no se cumple es el tercer punto, y no entiendo lo que quiere decir, el tipo unique nunca lo he utilizado.
Ademas tengo otras dos tablas que tengo creada una foreign key y me funciona a la perfeccion:

CREATE TABLE accesoAlum (

nomUsu varchar(20) not null,
clave varchar(20) not null,
dni varchar(20) not null,
index(dni),
primary key (nomUsu, clave, dni),
foreign key (dni) references alumno(dni) on delete cascade on update cascade)
type=InnoDB;

con esta tabla no he tenido ningun problema a la hora de crear la foreign key
  #8 (permalink)  
Antiguo 16/08/2005, 07:38
 
Fecha de Ingreso: noviembre-2002
Ubicación: Washington, DC
Mensajes: 822
Antigüedad: 21 años, 5 meses
Puntos: 5
Por casualidad en alumno hay solo una primary key?
__________________
Yanira
  #9 (permalink)  
Antiguo 16/08/2005, 08:00
 
Fecha de Ingreso: octubre-2003
Mensajes: 184
Antigüedad: 20 años, 6 meses
Puntos: 0
Si. La clave de alumno es el dni. Esta puesto en el primer mensaje
  #10 (permalink)  
Antiguo 16/08/2005, 08:47
 
Fecha de Ingreso: octubre-2003
Mensajes: 184
Antigüedad: 20 años, 6 meses
Puntos: 0
No te he entendido, no se lo que quieres decir con 'indexando asignatura en curso'
  #11 (permalink)  
Antiguo 16/08/2005, 09:15
 
Fecha de Ingreso: noviembre-2002
Ubicación: Washington, DC
Mensajes: 822
Antigüedad: 21 años, 5 meses
Puntos: 5
Sorry...lo borre cuando editaba.
Es una de estas que no esta funcionandote..
- In the referencing table, there must be an index where the foreign key columns are listed as the first columns in the same order.

- In the referenced table, there must be an index where the referenced columns are listed as the first columns in the same order.


donde veo diferencia es entre la tabla de accesoAlum y alumno.
dni esta indexado y es parte del primary key en accesoAlum
dni es primary key (solita) en alumno
Diferencia:
curso no esta indexado aunque es parte del primary key en asignatura
curso esta siendo indexado en alumno
__________________
Yanira
  #12 (permalink)  
Antiguo 16/08/2005, 09:28
 
Fecha de Ingreso: octubre-2003
Mensajes: 184
Antigüedad: 20 años, 6 meses
Puntos: 0
Entonces deberia funcionar si pongo lo siguiente:
CREATE TABLE alumno (

nombre varchar(20) not null,
apellido1 varchar(20) not null,
apellido2 varchar(20) not null,
curso int not null,
tipoCurso varchar(20) not null,
correoElec varchar(20) not null,
dni varchar(9) not null,
index(curso),
primary key (dni,curso),
foreign key (curso) references asignatura(curso) on delete cascade on update cascade) type=InnoDB;

pues nada que tampoco me sigue saliendo el mismo error del principio, diossss que tortura
  #13 (permalink)  
Antiguo 16/08/2005, 10:23
 
Fecha de Ingreso: agosto-2005
Mensajes: 12
Antigüedad: 18 años, 8 meses
Puntos: 0
Eso es opinable.
  #14 (permalink)  
Antiguo 16/08/2005, 11:06
 
Fecha de Ingreso: octubre-2003
Mensajes: 184
Antigüedad: 20 años, 6 meses
Puntos: 0
El que es opinable
  #15 (permalink)  
Antiguo 16/08/2005, 11:15
 
Fecha de Ingreso: noviembre-2002
Ubicación: Washington, DC
Mensajes: 822
Antigüedad: 21 años, 5 meses
Puntos: 5
Me referia a poner indice en curso - reordenandolo
No tengo MySQL aqui para probarlo
__________________
Yanira
  #16 (permalink)  
Antiguo 16/08/2005, 11:23
 
Fecha de Ingreso: octubre-2003
Mensajes: 184
Antigüedad: 20 años, 6 meses
Puntos: 0
Creo que no te entiendo, no se lo que quieres decir con poner indice en curso.
Puedo poner index(curso) en asignatura, pero no se si es a lo que te refieres.

Creo que te estoy volviendo loca/o
  #17 (permalink)  
Antiguo 16/08/2005, 12:25
 
Fecha de Ingreso: noviembre-2002
Ubicación: Washington, DC
Mensajes: 822
Antigüedad: 21 años, 5 meses
Puntos: 5
Intenta el index por favor si...no se me ocurre otra cosa, no se si es la hora o el stress que tengo. En la noche puedo revisar desde mi conexion otras ideas que tengo... Siempre que lo he usado, he tenido llaves primarias sencillas no compuestas y los indices salen de lujo...
__________________
Yanira
  #18 (permalink)  
Antiguo 16/08/2005, 13:43
 
Fecha de Ingreso: octubre-2003
Mensajes: 184
Antigüedad: 20 años, 6 meses
Puntos: 0
Oooooooooooleeeeeeeeeeeee!Por fin ha funcionado, muchas gracias por tu paciencia y por haberme ayudado.
Espero no tener que aparecer por aqui en mucho tiempo.
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 10:51.