1452: Не удаётся добавить или обновить дочернюю строку: нарушено ограничение внешнего ключа
MySQLЧто это значит?
Вы вставляете или обновляете дочернюю строку, но значение родительского ключа, на которое она указывает, отсутствует в ссылочной таблице; ограничение внешнего ключа её отклоняет.
Почему возникает?
INSERT/UPDATE со ссылкой на несуществующий родительский ключ, загрузка данных в неверном порядке (сначала дочерние) или удалённая родительская строка.
Как исправить
Сначала вставьте родительскую строку, затем дочернюю. Убедитесь, что ссылочное значение существует: SELECT * FROM parent_table WHERE key_column = value. Соблюдайте порядок родитель — потомок при массовой загрузке. Используйте SET FOREIGN_KEY_CHECKS=0 только в контролируемых операциях обслуживания и по завершении возвращайте значение 1.
Ещё по этой СУБД
- 1114Таблица заполнена
- 1215Не удаётся добавить ограничение внешнего ключа
- 1451Не удаётся удалить или обновить родительскую строку: нарушено ограничение внешнего ключа
- 1366Некорректное строковое/целое значение для столбца
- 1044Доступ пользователя к базе данных запрещён
- 1264Значение вне допустимого диапазона для столбца
- 1052Столбец 'x' в списке полей неоднозначен