Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/07/2008, 06:08
Isdiar
Invitado
 
Mensajes: n/a
Puntos:
Exclamación Fallo de una FOREIGN KEY

Buenos días amigos,

estoy creando una BD en MySQL que tiene 3 tablas: usuarios, tipousuario, usuariostipousuario

La tabla "usuarios" posee campos para albergar información personal de cada usuario: idUsuario, nombre, apellidos, dni,... La Primary Key es "idUsuario".

La tabla "tipousuario" posee dos campos: nombreTipo, descripcion. La Primary Key es "nombreTipo".

La tabla "usuariostipousuario" posee dos campos: idUsuario, nombreTipo. Ambos campos son Primary Keys. Cada campo posee una Foreign Key, que está enlazada con idUsuario de la tabla "usuarios" y con nombreTipo de la tabla "tipousuario" respectivamente.

El problema es que no puedo crear "usuariostipousuario" con la clave ajena de "nombreTipo". O sea, acotando el problema, he conseguido localizar eso. Puedo crear la tabla "usuariostipousuario", crear las Primary Keys y crear la Foreign Key de idUsuario, pero no la de nombreTipo.

En la Web de MySQL se recoge dicho error. Exactamente dice:
Si MySQL informa que ocurrió un error número 1005 en una sentencia CREATE TABLE y la cadena con el mensaje de error se refiere al errno (número de error) 150, significa que la creación de una tabla falló debido a una restricción de clave foránea formulada incorrectamente. Del mismo modo, si un ALTER TABLE falla y hace referencia al número de error 150, significa que se ha formulado incorrectamente una restricción de clave extranjera cuando se alteró la tabla. En MySQL 5.0, puede emplearse SHOW INNODB STATUS para mostrar una explicación detallada del último error de clave foránea sufrido por InnoDB en el servidor.

Nota: InnoDB no verifica las restricciones de claves foráneas en las claves foráneas o valores de claves referenciados que contengan una columna NULL.
Fuente: http://dev.mysql.com/doc/refman/5.0/es/innodb-foreign-key-constraints.html

La cuestión importante es: ¿cómo soluciono este problema?

Muchas gracias de antemano por todo. Sois de gran ayuda. Un saludo.

Última edición por Isdiar; 02/07/2008 a las 06:14