#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
, CONSTRAINTfk_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, он должен быть успешным.