Problemas con Foreign Keys ("can\'t create table... ")

Fernando Poblete Arrau
13 de Agosto del 2009
Hola, mi problema es:
tengo una tabla (la voy a llamar TablaA) con una Primary Key de dos campos, cada uno de los cuales es una Foreign Key hacia una Primary Key de otras tablas (TablaB y TablaC).
En la tabla A cree indices para ambos campos y todas las tablas son tipo InnoDB.
Estoy haciendo lo siguiente:

ALTER TABLE TablaA
ADD CONSTRAINT C1 FOREIGN KEY(campo1) REFERENCES TablaB(campoX) ON DELETE CASCADE ON UPDATE CASCADE;

ALTER TABLE TablaB
ADD CONSTRAINT C2 FOREIGN KEY(campo2) REFERENCES TablaB(campoX) ON DELETE CASCADE ON UPDATE CASCADE;

Obtengo el siguiente mensaje de error:
ERROR 1005: Can't create table './test/#sql-84b_4.frm' (errno: 150)

¿alguien me puede ayudar?
Muchas gracias.

Rodolfo Reyes
13 de Agosto del 2009
En el segundo alter table estas haciendo un Alter Table de la tablaB y haciendo referencia ha la tablaB, en pocas palabras estas creando una relación de uno a muchos sobre la misma tabla.


Fernando Poblete Arrau
13 de Agosto del 2009
Tienes razon, en realidad, me equivoque al tipearlo ahora aca en el foro. Ambos ALTER son sobre la tabla A.
Gracias pero el error no esta en eso.

Rodolfo Reyes
13 de Agosto del 2009
Lo unico que se me ocurre es que los datos de los campos que tienes creados en al tablas TablaA que hacen referencia ha la TablaB y TablaC violen la integridad referencial, por lo cual no podrias crear las llaves foraneas.

dabit
13 de Agosto del 2009
Yo tuve también ese problema cargando un script, y lo solucioné cambiando el orden de las órdenes.

Intenta crear primero los indices de la tabla que vas a referenciar antes de hacer el foreign key.

Prueba a ver si esto te valiese.

1 saludo