MySQL - problema con mysql

 
Vista:

problema con mysql

Publicado por Aitor (1 intervención) el 30/05/2013 21:45:35
este es el código de mis dos tablas generado con MySQL Workbench.

Cita:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
 
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci ;
USE `mydb` ;
 
-- -----------------------------------------------------
-- Table `mydb`.`Login`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Login` (
`id_login` INT NOT NULL AUTO_INCREMENT ,
`email` VARCHAR(40) NOT NULL ,
`password` VARCHAR(45) NOT NULL ,
PRIMARY KEY (`id_login`) )
ENGINE = InnoDB;
 
 
-- -----------------------------------------------------
-- Table `mydb`.`Question`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`Question` (
`id_question` INT NOT NULL AUTO_INCREMENT ,
`qstns` CHAR(100) NOT NULL ,
`modificado` TIMESTAMP NOT NULL ,
`id_fk` INT NOT NULL ,
PRIMARY KEY (`id_question`) ,
INDEX `id_fk` (`id_fk` ASC) ,
CONSTRAINT `id_fk`
FOREIGN KEY (`id_fk` )
REFERENCES `mydb`.`Login` (`id_login` )
ON DELETE NO ACTION
ON UPDATE CASCADE)
ENGINE = InnoDB;
 
 
 
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

Al insertar un nuevo dato en la segunda tabla, la que tiene el FK al ID de la primera tabla, me tira este error:

Cita:
Cannot add or update a child row: a foreign key constraint fails (`mydb`.`qstns`, CONSTRAINT `qstns_ibfk_1` FOREIGN KEY (`id_fk`) REFERENCES `login` (`id_login`))
He estado leyendo mucho sobre este error y veo que es porque intento meter algo que no existe en la tabla padre :S

Qué pasa? cómo lo arreglo?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

problema con mysql

Publicado por xve (1151 intervenciones) el 31/05/2013 08:02:21
Hola Aitor, como insertas el valor...
ten en cuenta, que el campo id_fk tiene que tener un valor que tiene que existir en la tabla Login, sino te dará ese error.

Si por ejemplo haces:
1
2
INSERT INTO `Login` (`id_login`, `email`, `password`) VALUES
(1, 'x@x.es', '1');

y luego:
1
INSERT INTO `mydb`.`Question` (`id_question`, `qstns`, `modificado`, `id_fk`) VALUES (NULL, 'primero', CURRENT_TIMESTAMP, '1');

no deberías de tener ningún problema.

Es una clave foranea, tiene que estar forzosamente vinculada.

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar