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 所以它给出了错误。
我正在尝试更新程序中的一行。 但我不断得到:
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 所以它给出了错误。