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

Fallo de una FOREIGN KEY

Estas en el tema de Fallo de una FOREIGN KEY en el foro de Mysql en Foros del Web. Buenos días amigos, estoy creando una BD en MySQL que tiene 3 tablas: usuarios, tipousuario, usuariostipousuario La tabla " usuarios " posee campos para albergar ...
  #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
  #2 (permalink)  
Antiguo 02/07/2008, 06:45
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Fallo de una FOREIGN KEY

Solo se me ocurre que tengas diferencias en las características de los campos referenciados (tipo de datos, not null, default...).

En la tabla "tipousuario" yo usaria un idTipo con formato numerico auto incrementado y si quieres un indice unico en nombreTipo y luego referenciaria el id, con lo que tambien tendrás que modificar la otra tabla...

Otra cosa es el orden en que creas las tablas obviamente no puedes crear "usuariostipousuario" hasta que esten creadas las otras dos...

Quim
  #3 (permalink)  
Antiguo 02/07/2008, 08:12
Isdiar
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Fallo de una FOREIGN KEY

Gracias "quimfv",

el fallo estaba en que en la tabla "tipousuario", yo lo configuré para UTF8, y en "usuariostipousuario", el campo "nombreTipo" estaba con otra configuración (latin1). Ya lo cambié y todo perfecto.

¡Gracias! Un saludo.
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 15:39.