1452 - Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполняется

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

1452 - Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа выходит из строя.

Я нашел их и попытаюсь избавиться от ссылок с помощью

alter table tillhör drop foreign key kat_id;

Но вместо этого получим эту ошибку:

# 1025 - Ошибка при переименовании '.\recept\tillh @1ir' в '.\recept # sql2-1570-3cb' (errno: 152).

Что я делаю неправильно?

Ответы

Ответ 1

Перед тем, как выполнить запрос

SET FOREIGN_KEY_CHECKS=0

затем установите значение 1 после того, как сделаете.

Ответ 2

У меня такая же проблема. Я решаю эту проблему, очищая, т.е. Удаляя все данные из дочерней таблицы и успешно выполняемые.

Это происходит, если дочерняя таблица содержит некоторые данные с внешним ключом, которые не находятся в родительской таблице, т.е. если есть две таблицы с именем Лицо (с идентификатором столбца, именем, адресом) и порядок (с идентификатором столбца, person_id, order_name); order.person_id - это внешний ключ person.id и таблица заказа содержат person_id, который отсутствует в таблице.

Вы можете решить эту проблему, используя следующий запрос

Delete from order where person_id NOT IN (select id from person where person.id = order.person_id)

Ответ 3

Когда у меня возникла эта проблема, это было связано с тем, что я забыл указать NULLS, разрешенные при создании полей идентификатора внешнего ключа. Я изменил его после факта, но 0 уже были в ценности. Он не смог найти 0 в таблице соответствия, а затем дал эту ошибку. Исправление: обновите нулевые значения до нулей.

Ответ 4

Вы должны установить для него значения null от родительского к дочерним таблицам Или установите одинаковые значения, например Детский стол first nam = Derick Имя родительской таблицы = Derick