Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/08/2012, 12:17
cpuser
 
Fecha de Ingreso: diciembre-2005
Ubicación: Mar del Plata
Mensajes: 146
Antigüedad: 18 años, 4 meses
Puntos: 2
Pregunta Problema con claves foráneas

Hola que tal, tengo un problema con una consulta que me da un error y no se porque.

la consulta es la siguiente:
Código MySQL:
Ver original
  1. INSERT INTO personas (nombre,apellido,ciudad,email,telefono,celular,usuario_id,tipopersona_id,estadocliente_id) values ('cd','','','','','','1','1','1')
o sin comillas simples (que tambien probe por las dudas):
Código MySQL:
Ver original
  1. INSERT INTO personas (nombre,apellido,ciudad,email,telefono,celular,usuario_id,tipopersona_id,estadocliente_id) values ('cd','','','','','',1,1,1)

me da el siguiente error:
#1452 - Cannot add or update a child row: a foreign key constraint fails (`avalith7_crm`.`personas`, CONSTRAINT `fk_personas_usuarios` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)

Esta es la estructura de las tablas:

Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `tipopersona` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `nombre` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
  4.   PRIMARY KEY (`id`)
  5. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=3 ;
  6.  
  7. CREATE TABLE IF NOT EXISTS `estadocliente` (
  8.   `id` int(11) NOT NULL AUTO_INCREMENT,
  9.   `nombre` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
  10.   PRIMARY KEY (`id`)
  11. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=12 ;
  12.  
  13. CREATE TABLE IF NOT EXISTS `usuarios` (
  14.   `id` int(11) NOT NULL AUTO_INCREMENT,
  15.   `alias` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
  16.   `clave` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
  17.   `nombre` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
  18.   `rol` varchar(45) COLLATE utf8_unicode_ci NOT NULL,
  19.   PRIMARY KEY (`id`)
  20. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=4 ;
  21.  
  22. CREATE TABLE IF NOT EXISTS `personas` (
  23.   `id` int(11) NOT NULL AUTO_INCREMENT,
  24.   `nombre` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
  25.   `apellido` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
  26.   `ciudad` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
  27.   `email` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
  28.   `telefono` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
  29.   `celular` varchar(45) COLLATE utf8_unicode_ci DEFAULT NULL,
  30.   `usuario_id` int(11) DEFAULT NULL,
  31.   `tipopersona_id` int(11) DEFAULT NULL,
  32.   `estadocliente_id` int(11) DEFAULT NULL,
  33.   PRIMARY KEY (`id`),
  34.   KEY `fk_personas_usuarios` (`usuario_id`),
  35.   KEY `fk_personas_tipopersona1` (`tipopersona_id`),
  36.   KEY `fk_personas_estadocliente1` (`estadocliente_id`)
  37. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=21 ;
  38.  
  39. ALTER TABLE `personas`
  40.   ADD CONSTRAINT `fk_personas_usuarios` FOREIGN KEY (`usuario_id`) REFERENCES `usuarios` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  41.   ADD CONSTRAINT `fk_personas_tipopersona1` FOREIGN KEY (`tipopersona_id`) REFERENCES `tipopersona` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  42.   ADD CONSTRAINT `fk_personas_estadocliente1` FOREIGN KEY (`estadocliente_id`) REFERENCES `estadocliente` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION;

por supuesto que en las tres primeras tablas tengo cargado con el id 1 algún dato:

Espero que alguien me pueda ayudar porque la verdad que ya me estuve volviendo loco.
Creo que el problema viene por el lado de las claves no se si están bien definidas o que (la base de datos la genere con el mysql workbench).

Desde ya muchisimas gracias a quien se tome el trabajo de leer todo esto y tirarme algun consejo.
__________________
Me gusta mucho ver Videos de carros en internet :)