Когда я пытался вставить строку, он дал мне код ошибки: 1452 - PullRequest
0 голосов
/ 22 декабря 2018
CREATE TABLE IF NOT EXISTS `game_review`.`comments` (
  `comment_id` INT NOT NULL AUTO_INCREMENT,
  `iduser` INT NOT NULL,
  `datePosted` DATETIME NOT NULL,
  `comments` LONGTEXT NOT NULL,
  `idgame` INT NOT NULL,
  PRIMARY KEY (`comment_id`),
  UNIQUE INDEX `comments_id_UNIQUE` (`comment_id`),
  INDEX `comment_user_id_idx` (`iduser`),
  INDEX `comment_game_id_idx` (`idgame`),
  CONSTRAINT `comment_user_id`
    FOREIGN KEY (`iduser`)
    REFERENCES `game_review`.`users` (`user_id`)
    ON DELETE CASCADE
    ON UPDATE NO ACTION,
  CONSTRAINT `comment_game_id`
    FOREIGN KEY (`idgame`)
    REFERENCES `game_review`.`games` (`game_id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


CREATE TABLE IF NOT EXISTS `game_review`.`users` (
  `user_id` INT NOT NULL AUTO_INCREMENT,
  `email_address` VARCHAR(45) NOT NULL,
  `password` VARCHAR(6) NOT NULL,
  `username` VARCHAR(20) NOT NULL,
  PRIMARY KEY (`user_id`),
  UNIQUE INDEX `user_id_UNIQUE` (`user_id`))
ENGINE = InnoDB;

Это действие:

INSERT INTO game_review.comments (iduser,datePosted,comments,idgame) VALUES(1,NOW(),"dsds",1)

Это ответ:

Код ошибки: 1452. Невозможно добавить или обновить дочернюю строку: внешний ключограничение не выполнено (game_review. comments, CONSTRAINT comment_game_id ИНОСТРАННЫЙ КЛЮЧ (idgame)

1 Ответ

0 голосов
/ 22 декабря 2018

У вас нет игры с идентификатором 1 в вашей таблице games, поэтому вы получаете сообщение об ошибке, поскольку таблица комментариев имеет FK, указывающий на эту таблицу.

...