Я пытаюсь обновить строку в своей программе. Но я получаю:Ошибка SQL 1452 в моей базе данных
MySQLIntegrityConstraintViolationException
что соответствует ошибке 1452 в соответствии с MySQL Workbench. Я знаю, это означает, что ограничение внешнего ключа не работает, но не может понять, как его исправить.
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, который не имеет место?
thanx заранее!
не ссылается на не существующую таблицу и поэтому не разрешается? – blipman17
нашел его, не может установить его в «NULL», но должен установить его в NULL – blipman17
, это совсем другое. Это называется однонаправленным отношением. –