Ver Mensaje Individual
  #5 (permalink)  
Antiguo 30/07/2013, 11:04
gmonterog
 
Fecha de Ingreso: mayo-2012
Ubicación: Palma de Mallorca
Mensajes: 71
Antigüedad: 11 años, 11 meses
Puntos: 1
Respuesta: Error (aparentemente tonto) con clave foranea y tipos de dato

Hola de nuevo gnzsoloyo:

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Pues el error es bastante evidente.
En Cliente tienes:
Código MySQL:
Ver original
  1. `id_cliente` varchar(10) COLLATE utf8_unicode_ci NOT NULL,

Mientras que en mail-cliente:
Código MySQL:
Ver original
  1. `id_mail_cm` int(11) NOT NULL,
Ni siquiera son del mismo tipo de dato, y por tanto no puedes hacer una FK como la que quieres.
Lo que no entiendo es por qué tienes el id_cliente en la tabla como varchar... ¿Es un nombre o username?

Fuera de eso, da la impresión de que hay algunos errores de diseño de las relaciones, pero habría que analizarlo con más tiempo. En todo caso, el problema es ese.
No entiendo que tiene que ver id_cliente con id_mail_cm. Si te fijas id_mail_cm es FK en la tabla clientes-mails y referencia a id_mail en la tabla mails. Esta relación no he tenido ningun impedimento para crearla.

id_cliente_cm es FK en la tabla clientes-mails y pretende referenciar a id_cliente en la tabla clientes... pero es aquí donde me da el error.

Esta es la sentencia SQL:

Código SQL:
Ver original
  1. ALTER TABLE `clientes-mails`
  2.         ADD FOREIGN KEY ( `id_cliente_cm` ) REFERENCES `neuro`.`clientes` (`id_cliente`)
  3.         ON DELETE CASCADE ON UPDATE CASCADE ;

Si no me equivoco en ningún momento intento hacer una relación entre id_cliente e id_mail_cm, ¿no?

Dime algo si puedes porque no lo tengo nada claro.

Gracias,

GMG