No entiendo pq falla la clave foránea
Publicado por Carlos (2 intervenciones) el 17/10/2007 13:27:07
Cuando ejecuto el script en phpmyadmin me dice #1005 - Can't create table './aprodd/GT_GT.frm' (errno: 150) , el error de clave foránea. No sé pq, en el mismo script tengo más claves foráneas y van bien. Pasa sólo con esta table que tiene de especial que es reflexiva en el modelo ER. La tabla que falla y a la que se refiere son:
tabla referida:
CREATE TABLE GrupoTeoria (
idTitulacion INT(2) NOT NULL,
idAsignatura INT(2) NOT NULL,
idCurso VARCHAR(5) NOT NULL,
idDepartamento INT(2) NOT NULL,
idGrupoTeoria INT(2) NOT NULL AUTO_INCREMENT,
numAlumnos INT(3),
PRIMARY KEY grupoTeoria_pk (idGrupoTeoria, idTitulacion, idAsignatura, idCurso, idDepartamento),
INDEX grupoTeoria_idx (idTitulacion, idAsignatura, idCurso, idDepartamento),
FOREIGN KEY grupoTeoria_fk_acad(idTitulacion, idAsignatura, idCurso, idDepartamento)
REFERENCES Acad(idTitulacion, idAsignatura, idCurso, idDepartamento)
ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=INNODB;
Tabla que refiere:
CREATE TABLE GT_GT (
idTitulacion INT(2) NOT NULL,
idAsignatura INT(2) NOT NULL,
idCurso VARCHAR(5) NOT NULL,
idDepartamento INT(2) NOT NULL,
idGrupoTeoria INT(2) NOT NULL,
idTitulacionGrupoCompartido INT(2) NOT NULL,
idAsignaturaGrupoCompartido INT(2) NOT NULL,
idDepartamentoGrupoCompartido INT(2) NOT NULL,
idGrupoTeoriaCompartido INT(2) NOT NULL,
PRIMARY KEY gt_gt_pk (idTitulacion, idAsignatura, idCurso, idDepartamento, idGrupoTeoria, idTitulacionGrupoCompartido, idAsignaturaGrupoCompartido, idDepartamentoGrupoCompartido, idGrupoTeoriaCompartido),
INDEX gt_gt_idx1 (idTitulacion, idAsignatura, idCurso, idDepartamento, idGrupoTeoria),
FOREIGN KEY gt_gt_fk(idTitulacion, idAsignatura, idCurso, idDepartamento, idGrupoTeoria)
REFERENCES GrupoTeoria(idTitulacion, idAsignatura, idCurso, idDepartamento, idGrupoTeoria)
ON DELETE CASCADE ON UPDATE CASCADE,
INDEX gt_gt_idx2(idTitulacionGrupoCompartido, idAsignaturaGrupoCompartido, idDepartamentoGrupoCompartido,idGrupoTeoriaCompartido),
FOREIGN KEY gt_gt_fk2(idTitulacionGrupoCompartido, idAsignaturaGrupoCompartido,idDepartamentoGrupoCompartido,idGrupoTeoriaCompartido)
REFERENCES GrupoTeoria(idTitulacion, idAsignatura, idDepartamento, idGrupoTeoria)
ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=INNODB;
Si tenéis alguna idea me sería de mucha ayuda, pq no entiendo que puede ocurrir. Muchas gracias
Carlos
tabla referida:
CREATE TABLE GrupoTeoria (
idTitulacion INT(2) NOT NULL,
idAsignatura INT(2) NOT NULL,
idCurso VARCHAR(5) NOT NULL,
idDepartamento INT(2) NOT NULL,
idGrupoTeoria INT(2) NOT NULL AUTO_INCREMENT,
numAlumnos INT(3),
PRIMARY KEY grupoTeoria_pk (idGrupoTeoria, idTitulacion, idAsignatura, idCurso, idDepartamento),
INDEX grupoTeoria_idx (idTitulacion, idAsignatura, idCurso, idDepartamento),
FOREIGN KEY grupoTeoria_fk_acad(idTitulacion, idAsignatura, idCurso, idDepartamento)
REFERENCES Acad(idTitulacion, idAsignatura, idCurso, idDepartamento)
ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=INNODB;
Tabla que refiere:
CREATE TABLE GT_GT (
idTitulacion INT(2) NOT NULL,
idAsignatura INT(2) NOT NULL,
idCurso VARCHAR(5) NOT NULL,
idDepartamento INT(2) NOT NULL,
idGrupoTeoria INT(2) NOT NULL,
idTitulacionGrupoCompartido INT(2) NOT NULL,
idAsignaturaGrupoCompartido INT(2) NOT NULL,
idDepartamentoGrupoCompartido INT(2) NOT NULL,
idGrupoTeoriaCompartido INT(2) NOT NULL,
PRIMARY KEY gt_gt_pk (idTitulacion, idAsignatura, idCurso, idDepartamento, idGrupoTeoria, idTitulacionGrupoCompartido, idAsignaturaGrupoCompartido, idDepartamentoGrupoCompartido, idGrupoTeoriaCompartido),
INDEX gt_gt_idx1 (idTitulacion, idAsignatura, idCurso, idDepartamento, idGrupoTeoria),
FOREIGN KEY gt_gt_fk(idTitulacion, idAsignatura, idCurso, idDepartamento, idGrupoTeoria)
REFERENCES GrupoTeoria(idTitulacion, idAsignatura, idCurso, idDepartamento, idGrupoTeoria)
ON DELETE CASCADE ON UPDATE CASCADE,
INDEX gt_gt_idx2(idTitulacionGrupoCompartido, idAsignaturaGrupoCompartido, idDepartamentoGrupoCompartido,idGrupoTeoriaCompartido),
FOREIGN KEY gt_gt_fk2(idTitulacionGrupoCompartido, idAsignaturaGrupoCompartido,idDepartamentoGrupoCompartido,idGrupoTeoriaCompartido)
REFERENCES GrupoTeoria(idTitulacion, idAsignatura, idDepartamento, idGrupoTeoria)
ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=INNODB;
Si tenéis alguna idea me sería de mucha ayuda, pq no entiendo que puede ocurrir. Muchas gracias
Carlos
Valora esta pregunta


0