MYSQL — # 1452 — Не удается добавить или обновить дочернюю строку: сбой ограничения внешнего ключа в существующей таблице с данными

#mysql

#mysql

Вопрос:

В базе данных MYSQL у меня есть две таблицы, которые я создал, и обе таблицы содержат соответствующие данные. Но я забыл добавить ограничение к внешнему ключу.

таблицы: hr_employees, hr_employee_types

Поэтому я решил сделать это:

 ALTER TABLE hr_employees
ADD CONSTRAINT fk_employee_employeetypes
FOREIGN KEY (employee_type_id) REFERENCES hr_employee_types(id);
 

Я получил эту ошибку:

#1452 — Не удается добавить или обновить дочернюю строку: сбой ограничения внешнего ключа ( phrms . #sql-16e0_1cf , CONSTRAINT fk_employee_employeetypes FOREIGN KEY ( employee_type_id ) ССЫЛКИ hr_employee_types ( id ))

Поля существуют, и в них есть соответствующие данные.

Как мне решить эту проблему?

Спасибо

Комментарии:

1. Существует много причин, по которым создание FK может завершиться неудачей — пожалуйста, добавьте определения таблиц, включая их движки (показать создать таблицу <имя_таблицы>)

Ответ №1:

Вероятно, это означает, что у hr_employees есть запись, которая не соответствует hr_employee_types или даже нулевому значению в соответствующем поле.

Комментарии:

1. @SKadakov — Некоторые значения employee_type_id в таблице hr_employees равны НУЛЮ. Что мне делать?

2. сначала обновите те, которые должны быть действительными, перечисленными в hr_employee_types (update hr_employees set type = valid_type где type равно null), затем повторите alter, он должен быть успешным.