我正在尝试更新程序中的一行。但我不断得到:
MySQLIntegrityConstraintViolationException
根据 MySQL 工作台,这对应于 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 中没有位置的行?
提前谢谢!