SQL 我的数据库出现 1452 错误

SQL 1452 error on my database

我正在尝试更新程序中的一行。 但我不断得到:

MySQLIntegrityConstraintViolationException

根据 MySQL workbench,对应于 1452 错误。 我知道这意味着外键约束不起作用,但不知道如何解决它。

UPDATE poker_event 
SET prize ='0.00', event_name = 'testdinges', min_players = '4', max_players ='500', loc_name = 'NULL' 
WHERE date_time = '2017-01-26 00:00:00.0';

错误发生在loc_name 设置为NULL 时。 只有当我删除程序中的位置,然后尝试更新 poker_event.

中的一行时才会发生这种情况

关于我的数据库,这是 MySQl 在我使用逆向工程选项时给我的。 (仅相关部分)

CREATE TABLE IF NOT EXISTS `fullhousegr1`.`location` (
  `loc_name` VARCHAR(255) NOT NULL,
  `house_number` INT(11) NOT NULL,
  `postal_code` VARCHAR(7) NOT NULL,
  `capacity` INT(11) NOT NULL,
  `place` VARCHAR(40) NOT NULL,
  `street` VARCHAR(40) NOT NULL,
  PRIMARY KEY (`loc_name`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;

CREATE TABLE IF NOT EXISTS `fullhousegr1`.`poker_event` (
  `event_name` VARCHAR(45) NOT NULL,
  `date_time` DATETIME NOT NULL,
  `min_players` INT(11) NOT NULL,
  `max_players` INT(11) NOT NULL,
  `prize` DECIMAL(10, 2) NOT NULL,
  `loc_name` VARCHAR(255) NULL DEFAULT NULL,
  PRIMARY KEY (`date_time`),
  INDEX `loc_name` (`loc_name` ASC),
  CONSTRAINT `poker_event_ibfk_1`
    FOREIGN KEY (`loc_name`)
    REFERENCES `fullhousegr1`.`location` (`loc_name`)
    ON DELETE SET NULL
    ON UPDATE SET NULL)
ENGINE = InnoDB
DEFAULT CHARACTER SET = latin1;

那么,我必须在我的数据库中更改什么才能更新 poker_event 中没有位置的行?

提前致谢!

外键需要一个存在于父 table 中的值。 NULL 不是一个值,这意味着我们还不知道这个值。不要将外键设为 NULL。最好将其添加到 0,您需要将其添加到父级 table。

你输入了 FOREIGN KEY (loc_name) 但同时 loc_name = NULL 所以它给出了错误。