Ver Mensaje Individual
  #3 (permalink)  
Antiguo 30/07/2013, 10:22
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 gnzsoloyo;

Cita:
Iniciado por gnzsoloyo Ver Mensaje
por las dudas, ejecuta lo siguiente y verifiquemos:
Código MySQL:
Ver original
  1. SHOW CREATE TABLE `clientes-mails`;
  2. SHOW CREATE TABLE `clientes`;

Opia y postea lo que te devuelva cada una.
Otra cosa: nunca, jamás uses caracteres o palabras reservadas en los nombres de objetos de base de datos (columnas, tablas, bases, rutinas). El día que te olvides de poner los acentos graves (`), se generarán errores sintácticos y te preguntarás po r qué.
Es decir, no uses el signo menos (-), usa la raya (_).
Marcando textos completos y mostrar columna de relación...

clientes-mails devuelve:
Código SQL:
Ver original
  1. CREATE TABLE `clientes-mails` (  
  2. `id_cm` INT(11) NOT NULL AUTO_INCREMENT,  
  3. `id_mail_cm` INT(11) NOT NULL,  
  4. `id_cliente_cm` VARCHAR(10) NOT NULL,  
  5. `mail_status_cm` tinyint(1) NOT NULL COMMENT '1=ok; 2=error',  
  6. `mail_error_cm` VARCHAR(150) NOT NULL COMMENT 'Error capturado por la clase phpmailer',  
  7. PRIMARY KEY (`id_cm`),  KEY `id_mail_cm` (`id_mail_cm`,`id_cliente_cm`),  
  8. KEY `id_cliente_cm` (`id_cliente_cm`),  CONSTRAINT `clientes-mails_ibfk_1` FOREIGN KEY (`id_mail_cm`)
  9. REFERENCES `mails` (`id_mail`) ON DELETE CASCADE ON UPDATE CASCADE) ENGINE=InnoDB DEFAULT CHARSET=utf8

y clientes devuelve:
Código SQL:
Ver original
  1. CREATE TABLE `clientes` (  
  2. `id_cliente` VARCHAR(10) COLLATE utf8_unicode_ci NOT NULL,  
  3. `cif_cliente` VARCHAR(9) COLLATE utf8_unicode_ci NOT NULL,  
  4. `nombre_empresa_cliente` VARCHAR(50) COLLATE utf8_unicode_ci NOT NULL COMMENT 'Nombre de la empresa',  
  5. `nombre_contacto_cliente` VARCHAR(50) COLLATE utf8_unicode_ci DEFAULT NULL COMMENT 'Nombre de la persona de contacto',  
  6. `mail_cliente` VARCHAR(150) COLLATE utf8_unicode_ci NOT NULL,  
  7. `actividad_cliente` INT(11) NOT NULL COMMENT 'Clave foranea que referencia a la tabla actividades',  
  8. `comercial_asignado_cliente` INT(11) NOT NULL COMMENT 'Clave foranea que referencia a la tabla comerciales',  
  9. `id_usuario_cliente` INT(11) NOT NULL COMMENT 'Clave foranea que referencia a la tabla usuarios',  
  10. PRIMARY KEY (`id_cliente`),  
  11. KEY `actividad_cliente` (`actividad_cliente`),  
  12. KEY `comercial_asignado_cliente` (`comercial_asignado_cliente`),  
  13. KEY `id_usuario_cliente` (`id_usuario_cliente`),  
  14. CONSTRAINT `clientes_ibfk_10` FOREIGN KEY (`id_usuario_cliente`) REFERENCES `usuarios` (`id_usuario`) ON DELETE CASCADE ON UPDATE CASCADE,  
  15. CONSTRAINT `clientes_ibfk_5` FOREIGN KEY (`comercial_asignado_cliente`) REFERENCES `comerciales` (`id_comercial`) ON UPDATE CASCADE,  
  16. CONSTRAINT `clientes_ibfk_7` FOREIGN KEY (`actividad_cliente`) REFERENCES `actividades` (`id_actividad`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

Tu dirás ahora que, las BBDD no son lo mío precisamente.

Muchas gracias por la ayuda.

Saludos,

GMG